gpt4 book ai didi

java - 我应该为我的网络客户端实现使用 java.io 还是 java.nio?

转载 作者:行者123 更新时间:2023-11-30 09:48:04 26 4
gpt4 key购买 nike

所以我正在创建一个游戏,非常基本的多人游戏。我已经使用异步非阻塞 I/O(原始 java.nio)降低了服务器端,但现在我需要设计客户端。

我不确定我应该怎么做。我的直觉告诉我,将 NIO 用于客户端有点矫枉过正(它不会处理多个连接,对吧?)但我想要第二个意见。

所以问题是,对于单连接 客户端,使用java.iojava.nio 是最佳选择?

而且,如果最好的选择是标准 I/O,那么使用 ByteBuffer 是否仍然是好的做法?或者只是普通的字节数组?

最佳答案

性能可能会有所不同,但它取决于平台并且很可能无关紧要。例如,我所做的测试表明 NIO 和标准 I/O 在 Linux 和 Windows 上的表现不同。在发送大量数据时,NIO 在 Linux 平台上表现较好,但在 Windows 上则相反。注意:我已将套接字配置为在 NIO 上阻塞。编写客户端应用程序时,没有理由使用非阻塞 I/O 和轮询。

我不会担心性能。从这个意义上说,很难说哪个更好。随心所欲。如果您想使用标准 I/O,但仍想使用 ByteBuffers,您可以做的是使用 newChannel(InputStream) 包装 Socket 的 InputStreamOutputStreamnewChannel(OutputStream) , 分别。但是,额外的同步和其他检查会产生开销。我的建议是使用 java.nio 并使用阻塞 I/O (configureBlocking(true))。

关于java - 我应该为我的网络客户端实现使用 java.io 还是 java.nio?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6404582/

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