티스토리 뷰
UDP
: UDP는 특별한 경우가 아니면 하나의 소켓을 사용한다. 하나의 소켓을 통하여 여러 호스트들과 데이터를 송/수신할 수 있다.
UDP 기반의 데이터 입/출력 함수
: UDP 소켓은 연결 상태를 유지하지 않으므로, 데이터를 전송/수신 하는 함수 호출 시 반드시 보내고자/받고자 하는 곳의 주소 정보를 포함해야 한다.
1 2 3 4 5 6 7 8 9 | int sendto( _In_ SOCKET s, _In_ const char *buf, _In_ int len, _In_ int flags, _In_ const struct sockaddr *to, _In_ int tolen ); |
=> 성공 시 전송된 바이트 수 리펀, 실패시 -1 리턴
1 2 3 4 5 6 7 8 | int recvfrom( _In_ SOCKET s, _Out_ char *buf, _In_ int len, _In_ int flags, _Out_ struct sockaddr *from, _Inout_opt_ int *fromlen ); | cs |
=> 성공 시 전송된 바이트 수 리펀, 실패시 -1 리턴
connect 함수 호출을 통한 성능의 향상
: UDP 에서는 커널과 소켓이 항상 연결되어 있는 것이 아닌, sendto와 recvfrom 이 호출 될 때 연결되었다가 끊어진다. 이때 걸리는 시간이 전체 시간의 약 1/3을 차지한다고 한다. 따라서, connect를 사용하여 IP와 POort를 소켓에 할당해 놓으면 커널은 그 소켓과의 연결 상태를 계속 유지하게 되는데, 이를 통해 성능 향상이 가능하다.
'Network Programming' 카테고리의 다른 글
[TCP/IP]DNS (0) | 2016.06.26 |
---|---|
[TCP/IP]스트림 half-close (0) | 2016.06.26 |
[TCP/IP]TCP/IP 프로토콜 스택(4계층) (0) | 2016.06.25 |
[TCP/IP]주소 체계와 데이터 정렬 (0) | 2016.06.24 |
[TCP/IP]소켓의 생성과 프로토콜의 설정 (0) | 2016.06.24 |
댓글