我有一个在Java中的TCP服务器应用程序。当客户端连接时,它会尝试从连接中读取数据包。但是,即使客户端没有发送任何内容,它也会读取。我得到的是由0初始化的字节数。我期望套接字等待,并最终超时,直到有数据到达。但是,相反,它表现得很奇怪。
这是怎么回事,我该如何解决它?
以下是我从套接字读取:爪哇套接字行为奇怪
byte bytes[] = new byte[25];
socket.getInputStream().read(commandBytes);
我有一个在Java中的TCP服务器应用程序。当客户端连接时,它会尝试从连接中读取数据包。但是,即使客户端没有发送任何内容,它也会读取。我得到的是由0初始化的字节数。我期望套接字等待,并最终超时,直到有数据到达。但是,相反,它表现得很奇怪。
这是怎么回事,我该如何解决它?
以下是我从套接字读取:爪哇套接字行为奇怪
byte bytes[] = new byte[25];
socket.getInputStream().read(commandBytes);
我得到的是阿雷由0
初始化的字节你得到的是一个回报来自read()
方法的值,告诉您读取了多少个字节,或者-1表示流的结束,即对等关闭了连接。由于你忽略了这个值,你的代码是不正确的。
我希望套接字等待,并最终超时,直到有一些数据来。
由于您没有设置超时,所以不会超时:它会阻塞,直到数据到达或流结束发生。
但是,相反,它表现得很奇怪。
没有什么奇怪的,除了你的期望。
我们可以看到代码吗? – Dima 2014-12-07 15:22:23
当然。看我的帖子。 – Pavol 2014-12-07 15:34:16