有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我应该使用java吗。io或java。我的网络客户端实现的nio?

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

我不知道该怎么做。我的直觉告诉我,为客户机使用NIO是过分的(它不会处理多个连接,对吧?)但我需要第二种意见

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

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


共 (2) 个答案

  1. # 1 楼答案

    简单的流I/O更容易处理,但不一定慢。我认为,它在内部使用NIO进行网络访问。(当然,如果您可以简单地重用服务器的代码,那么使用它可能是一种选择。)

    由于OutputStream不支持编写ByteBuffer,因此在这里使用它没有意义

    (免责声明:这只是我的观点(以及尝试将基于流IO的网络包移植到NIO的经验)。我不确定这里的最佳实践是什么。)

  2. # 2 楼答案

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

    我不会担心性能。从这个意义上说,很难说哪个更好。随大流。如果您希望使用标准I/O,但仍然希望使用ByteBuffers,那么可以分别使用newChannel(InputStream)newChannel(OutputStream)包装套接字的InputStreamOutputStream。但是,额外的同步和其他检查会带来开销。我的建议是使用java.nio和阻塞I/O(configureBlocking(true)