对于大学本学期,我们必须以4人为一组编写网络游戏(java).我自愿为我的团队研究网络代码.
阅读java网络,似乎有两种UDP网络方法:
http://java.sun.com/j2se/1.4.2/docs/api/java/net/DatagramSocket.html 这是一个标准的UDP套接字,可以将数据包发送到任何端口的任何IP地址.
http://java.sun.com/j2se/1.4.2/docs/api/java/nio/channels/DatagramChannel.html 这是一种基于udp套接字构建的通道系统.我不完全确定它提供什么,除了只连接到一个客户端的能力,这在这种情况下不是很有用.
这些是唯一的选择吗?哪个最适合用于4-8名玩家的实时多人游戏?
你不是先问第一个问题.第一个问题是:什么消息传递规则最适合这个游戏?
对于少数用户来说,UDP完全比它的价值更麻烦.你必须担心丢失的数据包,你必须想出一些方法将数据打包成小包,yada,yada,yada.
在4-8播放器规模,您可以与Web服务互连并发送肥皂消息.这将为您处理所有数据序列化.哎呀,你甚至可以使用JMS.
至于你的文字问题,渠道是nio的一部分.它们支持多路复用等待,而套接字则不支持.如果你需要问'这些端口上有没有包给我?' 你想要频道.没有它们,您需要一个每端口线程.当然,假设您有多个接收数据的端口.