gpt4 book ai didi

java - DatagramSocket 和 DatagramChannel 的区别

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:59 25 4
gpt4 key购买 nike

在大学的这个学期,我们必须以 4 人为一组编写网络游戏(用 Java)。我自愿为我的团队编写网络代码。

阅读java网络,似乎有两种UDP网络方法:

https://docs.oracle.com/javase/1.5.0/docs/api/java/net/DatagramSocket.html .这是一个标准的 UDP 套接字,它可以将数据包发送到任何端口的任何 IP 地址。

https://docs.oracle.com/javase/1.5.0/docs/api/java/nio/channels/DatagramChannel.html .这是某种 channel 系统,建立在 udp 套接字之上。我不完全确定它提供了什么,除了只连接到一个客户端的能力,这在这种情况下不是很有用。

这些是唯一的选择吗?对于 4-8 名玩家的实时多人游戏,哪个最适合?

最佳答案

您不是先问第一个问题。第一个问题是:哪种消息传递规则最适合这款游戏?

对于少数用户来说,UDP 完全是得不偿失的麻烦。你必须担心丢失数据包,你必须想出一些方法将数据打包成小数据包,yada,yada,yada。

在 4-8 位玩家的规模下,您可以与网络服务互连并四处发送肥皂消息。这会为您处理所有数据序列化。哎呀,你甚至可以使用 JMS。

至于你的字面问题, channel 是 nio 的一部分。它们支持多路复用等待,而套接字不支持。如果您需要询问“这些端口中的任何一个是否有给我的数据包?”你想要 channel 。没有它们,您需要每个端口一个线程。当然,假设您有多个端口用于接收数据。

关于java - DatagramSocket 和 DatagramChannel 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2079370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com