我正在编程一个服务器(Java) - 客户端(Android/Java)应用程序。该服务器是一个W7。所有的沟通都进行得很顺利,直到客户端读取数据时才冻结并停止读取数据,直到我发送数据2次。Java套接字不读取数据
未读取的数据是一个字节数组。我重复一遍,直到这一点,所有的沟通都顺利进行。
下面是我用于发送数据的代码:
Long lLength = new Long(length);
byte [] bLength = this.longToBytes(lLength.longValue());
dos.write(bLength);
dos.flush();
dos.write(bLength);
dos.flush();
dos.write(bLength);
dos.flush();
该代码转换长值转换成8个字节数组。正如我所说的,当第一次写入被执行(并且客户端正在等待数据)时,读取没有完成。直到我执行最后一次写入()时才完成。
而这里的代码来阅读:
byte length[] = {0,0,0,0,0,0,0,0};
dis.read(length);
我使用Wireshark的嗅探流量,我可以看到字节数组发送,并以ACK客户端的答案,但阅读没有完成。
Here我已经上传了我用wireshark完成的捕获。只有协议数据。
在客户端和服务器,插座都设置这样的:
socket = new Socket(sIP, oiPort.intValue());
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
这是推动我疯了...我不知道为什么,在某一时刻,应用程序停止读取数据,当我以同样的方式发送它。
我想,这个问题可能在客户端套接字的输入缓冲器...但我不知道该怎么做或什么尝试...
说,我也考服务器在WXPSP3,它仍然无法正常工作。
非常感谢,
Newlog。
你好,斯蒂芬。我已经检查了你所说的。使用Wireshark,我可以看到8个字节被发送。我不使用writeLong,因为在写入时,客户端没有读取数据。 (起初它是一个writeLong)。 – newlog