JavaでTCPソケットクライアントサーバープログラムを使用しています。
クライアントから、センコンドごとにバイナリメッセージ(byte []からのバイナリデータ)を数回送信します。
サーバーから、これらのメッセージを同じ順序とサイズで読みたいと思います。
問題は、サーバーが常に同じサイズのメッセージを読み取るとは限らないことです。それらを「グループ化」しているようです。例えば:
クライアントは以下を送信します: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);
グループ化されたメッセージはバイナリメッセージであり、このモジュールはそれらを「理解」できないため、手動でメッセージを分離することはできません。
したがって、質問は次のとおりです。読者がメッセージを個別に受信することをどのように保証できますか?
ありがとう。