Javaによるソケット通信サーバーアプリケーションを作っていたとき、クライアント端末からの着信に対して1秒以下で応答を返している通信ログが残っているにもかかわらず、クライアント端末側で5秒の応答待ちタイムアウトが発生して通信異常になるケースがテスト中に発生していた。 そのときのサーバー側の応答を返す部分のコードは次のような感じ、 public void writeResponse(byte[] data, Socket socket) throws IOException { DataOutputStream out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()); // 電文長を送出 out.writeInt(data.length); // 電文本体を送出 out.write(data)
![ソケット通信時の遅延 - 起死回生](https://cdn-ak-scissors.b.st-hatena.com/image/square/948960fbfff08529aa7738775170002fee4e089d/height=288;version=1;width=512/http%3A%2F%2Fbillysumida.cocolog-nifty.com%2F.shared-pleasy%2Fnifty_managed%2Fimages%2Fweb%2Fogp%2Fdefault.png)