주요 메서드
- 생성자
- connect
- setSoTimeout
- shutdownInput
- shutdownOutput
소켓 옵션 설정
setTcpNoDeply (TCP_NODELAY)
패킷 크기에 상관없이 가능한 빨리 패킷을 전송한다. (네이글 알고리즘)
- 일반적으로 작은 패킷은 바로 전송하지 않고 큰 패킷 하나로 합쳐지게 된다. 그러나 작업 패킷을 지속적으로 보내야하는 경우에는 딜레이를 야기할수 있다.
- 이럴 경우 해당 옵션을 사용하여 패킷을 바로바로 보낼수 있다.
setSoLinger (SO_LINGER)
소켓이 닫힐 때 전송되지 않은 데이터를 어떻게 처리할지 여부를 결정한다.
- 기본적으로는 close()는 즉시 반환된다. 그러나 시스템 내부적으로는 아직 전송되지 않은 데이터는 데이터를 계속해서 전송한다.
- SO_LIGNER 옵션이 켜져있다면 소켓이 닫힐때, 아직 전송되지 않은 데이터는 주어진 linger 시간동안 데이터를 보내고 ack를 받기위해 블러킹 된다. 그 이후 지정된 시간을 초과하면 아직 전송되지 않은 데이터는 버려진다.
- linger 시간이 0으로 설정될 경우 소켓이 닫힐 때 아직 전송되지 않은 데이터는 버려진다.
setSoTimeout (SO_TIMEOUT)
read() 메서드는 충분한 바이트를 읽을 때까지 블러킹된다. SO_TIMEOUT을 설정하게 되면 read() 메서드의 호출이 지정된 시간 이상 블러킹 되지 않는다.타임아웃이 발생하더라도 소켓의 연결상태가 바뀌는것은 아니니 read() 메서드를 다시 호출하여 대기할 수 있다.
setReceiveBufferSize, setSendBuffserSize (SO_RCVBUF, SO_SNDBUF)
TCP는 네트워크 성능을 향상시키기 위해 버퍼를 사용한다.파일 전송 프로토콜의 경우 버퍼의 크기가 큰 편이 유리하지만, 텔렛이나 게임과 같은 경우 버퍼의 크기가 작은 편이 유리할 수 있다.