반응형

UDP 소켓을 통해서 통신할 상대방이 한 곳으로 고정되어 있다면?

  • 처리 속도를 향상 시킬 필요가 있습니다. > Connected(연결된) UDP 사용

 

connect() 함수 추가 호출

UDP 소켓에 대해 connect()함수를 호출하면 Kernel은 connect() 인자로 받은 상대방 소켓주소와 UDP 소켓을 내부적으로 미리 연결해 둡니다. sendto() 함수에 의해 데이터를 전송하는 순간 소켓과 Kernel이 내부적으로 연결되는 시간을 단축함으로써 데이터를 빠르게 전송할 수가 있습니다.

Coonnected UDP를 이용할 땐 sendto()/recvfrom()은 사용 불가하고 send(),write()/read(),recv() 함수를 사용해야 합니다.

 

  • Connected UDP를 만들더라도 3-Way Handshke 연결 설정이 이루어지지 않습니다. 그러므로 존재하지 않는 IP 주소를 connect()인자로 줘도 connect()함수에서는 에러가 발생하지 않습니다. read()나 recv() 실행 시에 발생합니다.
  • Connected UDP의 고정된 통신 상대를 변경할 수 있습니다. 
  • Connected UDP 소켓의 사용을 중지하려면 Kernel에 이를 알려주기만 하면 됩니다.
    = sin_family 값을 AF_UNSPEC으로 하고 connect()를 호출하면 됩니다.
반응형