我有一个 Java 中的 TCP 套接字客户端-服务器程序。
从客户端,我每秒钟发送几次二进制消息(来自字节 [] 的二进制数据)。
从服务器,我想以相同的顺序和大小读取这些消息。
问题是服务器显然并不总是以相同大小读取消息。它似乎将它们“分组”。例如:
客户端发送:12字节 - 12字节 - 12字节 - 12字节 - 15字节 - 15字节
服务器接收:12字节 - 48字节 - 15字节 - 15字节
我怎样才能防止这种情况?
现在,我的代码是:
客户:
(initialization)
mySocket = new Socket(direccion, puerto);
mySocket.setTcpNoDelay(true);
BufferedOutputStream os = new BufferedOutputStream( mySocket.getOutputStream() );
(sending)
os.write( bytes );
os.flush();
服务器
(initialization)
serverSocket = new ServerSocket(12321);
Socket con = serverSocket.accept();
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
(receiving)
char[] msg = new char[1024];
String mensaje;
int nbytes;
nbytes = reader.read(msg);
我不能手动分离分组的消息,因为它们是二进制消息,这个模块不能“理解”它们。
所以,问题是:我如何确保读者单独收到消息?
谢谢。