我目前正在编写我正在开发的多人游戏的服务器端。我需要知道服务器套接字上正在接收多少数据,以便我可以循环访问每个字节。例如,如果我调用
writeUTF()
两次,我将如何循环调用每次而不出现异常?
我的第一次尝试是简单地尝试抓住一个
EOFException
。但你似乎无法抓住这些。那么,如何获取 DataInputStream
中接收到的数据量?如果您需要代码示例,请告诉我,我将相应地编辑问题。
从套接字读取数据的调用将被阻塞,直到收到数据为止。没有办法知道流中有多少数据。您有多种方法可以解决这个问题,以下是一些建议:
在您的通信协议中,包含长度字段或一些指示长度的命令代码。
使用异步读写或者使用专门处理通信的线程。
在使用键盘和编写代码之前,请考虑一下您的应用程序架构、其组件、它们的功能以及它们之间的相互关系。