서버 : C++(Win7)
클라이언트 : Java(안드로이드)
서버와 클라이언트는 TCP 통신을 하면서 클라이언트측에서 0.5초 주기로 10바이트 내외의
패킷을 계속 보냅니다.
그런데 클라이언트에서 패킷을 전송하면 이게 바로 가지 않고, 버퍼에 누적됐다가 나가는지
서버에서 찍어보면 여러 패킷이 한꺼번에 뭉쳐오는 경우가 있습니다.
근데 또 0.5초 간격으로 잘 가는 경우도 있어요. 현상이 일관적이지가 않습니다.
대강의 클라이언트 소스는
SocketAddress sock_addr = new InetSocketAddress(ip, port);
socket = new Socket();
socket.connect(sock_addr, timeout);
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// 패킷생성
out.write(packet);
out.flush();
대충 이렇습니다.
flush 하게되면 바로바로 전송될 줄 알았는데 그렇지가 않네요.
윈도우 클라이언트도 있는데 이건 이런 현상 없이 일정 간격으로 잘 나가거든요.
왜 이런 현상이 생길까요?