socket 을 이용하여 통신을 하는데, 반응 속도가 느리다면 tcp_nodelay 옵션을 사용해보는 것도 좋은 방법일 수 있습니다.
tcp socket 의 경우, 기본적으로 Nagle 알고리즘을 사용합니다. Nagle 알고리즘은 전송의 효율을 위해, 적은 데이터를 모아서 큰 패킷으로 한번에 보내는 방식입니다. 따라서 이경우 적은 양의 데이터가 자주 발생되는 시스템에서는 반응속도가 느려질 수 있습니다.
이를 해결하기 위해 socket.setTcpNoDelay(true) 를 해주면 Nagle 알고리즘이 해제되면서, 패킷이 준비되면 바로 보내게 됩니다.
setTcpNoDelay
public void setTcpNoDelay(boolean on)
throws SocketException
Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm).
Parameters:
on - true to enable TCP_NODELAY, false to disable.
Throws:
SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
JDK1.1
See Also:
getTcpNoDelay()
public void setTcpNoDelay(boolean on)
throws SocketException
Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm).
Parameters:
on - true to enable TCP_NODELAY, false to disable.
Throws:
SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
JDK1.1
See Also:
getTcpNoDelay()
하지만 TCP_NODELAY 를 사용하게 되면 반응속도가 증가될 수는 있으나, 네트워크의 효율이 감소하고 시스템의 부하가 늘어나게 되니 꼭 필요한 경우에만 사용하시기 바랍니다.
반응형
'Program > Android Java' 카테고리의 다른 글
탭에 숫자(카카오톡같은) (0) | 2012.08.28 |
---|---|
데이터베이스 헬퍼코드 입니다. 에셋폴더에서 가져다가 사용하는 것. (0) | 2012.08.28 |
[ANDROID] 백키 두 번 눌러 어플(액티비티) 종료시키기 (0) | 2012.07.27 |
디지털 액자 소스 (0) | 2012.07.20 |
[필수] 유용한 자바스크립트 오픈소스 모음 (0) | 2012.07.20 |