티스토리 뷰

Network Programming

[TCP/IP]UDP

군자동꽃미남 2016. 6. 26. 00:27

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
);
 

cs

=> 성공 시 전송된 바이트 수 리펀, 실패시 -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를 소켓에 할당해 놓으면 커널은 그 소켓과의 연결 상태를 계속 유지하게 되는데, 이를 통해 성능 향상이 가능하다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함