[C & C++] send(), recv() / sendto(), recvfrom() 정리

2019. 12. 5. 22:48· # Language/[ C & C++ ]
반응형

안녕하세요 허언증입니다.

 

소켓통신에서 데이터 송수신 함수로는 send, recv / sendto, recvfrom 이 있다.


(1) 함수원형

  ○ send(int sockfd, const void *buf, size_t len, int flags)
  ○ recv(int sockfd, const void *buf, size_t len, int flags)
  ○ sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
  ○ recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)


(2) TCP 데이터 송수신
: send() / recv()함수는 address를 지정할수 없음, TCP 통신에서 사용 (연결지향)
(물론 sendto/recvfrom도 사용 가능)

send(int sockfd, const void *buf, size_t len, int flags)
- return value : 전송 성공 시 전송한 바이트 수 반환 , 실패 시 -1 반환


recv(int sockfd, const void *buf, size_t len, int flags)
- return value : 전송 성공 시 전송한 바이트 수 반환 , 실패 시 -1 반환

=> 서버측에서는 accept하여 생성된 소켓을, 클라이언트측에서는 connect에 사용한 소켓을,
    이용하여 데이터를 송수신 한다.


(3) UDP 데이터 송수신
: sendto() / recvfrom()함수는 address를 지정가능,  UDP 통신에서 사용 (비연결지향)

sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
- dest_addr : 데이터가 전송될 원격 호스트의 주소
- len : 주소정보 구조체의 길이(구조체의 길이를 읽으므로 int형)


 recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
- src_addr : 수신받은 데이터를 송신한 단말의 주소를 리턴받기 위한 버퍼 포인터
- addrlen : 주소정보 구조체의 길이(구조체의 길이를 입력 받으므로 포인터형)


(4) 데이터 송수신용 시스템 호출

- write : Stream소켓을 통한 데이터 송신
- read : Stream소켓을 통해 데이터 수신

- send : Option을 규정하는 데이터 송신(Stream 소켓)
- recv : Options을 규정하는 데이터 수신(Stream 소켓)

- sendto : Datagram소켓을 통해 데이터 송신
- recvfrom : Datagram소켓을 통해 데이터 수신

 

 


참고

 

[C & C++] send() , sendto() 차이점

안녕하세요 허언증입니다. 참고 https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-send send function (winsock2.h) - Win32 apps Sends data on a connected socket. docs.microsoft.co..

min-310.tistory.com

 

 

[C & C++] recv() , recvfrom() 차이점

안녕하세요 허언증입니다. 참고 https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recv recv function (winsock2.h) - Win32 apps Receives data from a connected socket or a bound co..

min-310.tistory.com

 


 

 

일부 출처:

https://mintnlatte.tistory.com/241

반응형

'# Language > [ C & C++ ]' 카테고리의 다른 글

[C & C++] C & C++ 자료형 총 집합  (0) 2019.12.14
[C & C++] select() , WSAEventSelect() 함수 (feat.FD_set)  (0) 2019.12.12
[C & C++] recv() , recvfrom() 차이점 (feat. network_socket)  (0) 2019.12.05
[C & C++] send() , sendto() 차이점 (feat. network_socket)  (0) 2019.12.05
[C & C++] ZeroMemory() , memset() 차이점 (feat. 구조체 초기화)  (0) 2019.12.05
'# Language/[ C & C++ ]' 카테고리의 다른 글
  • [C & C++] C & C++ 자료형 총 집합
  • [C & C++] select() , WSAEventSelect() 함수 (feat.FD_set)
  • [C & C++] recv() , recvfrom() 차이점 (feat. network_socket)
  • [C & C++] send() , sendto() 차이점 (feat. network_socket)
이론과 실습 사이
이론과 실습 사이
Job : 네트워크, 가상화, Private Cloud / Hobby : 사진,재테크(주식)
이론과 실습 사이
이론과 실습 사이
이론과 실습 사이
전체
오늘
어제
  • KyungKing's Story
    • # OS
      • [ Linux ]
      • [ Windows ]
    • # Language
      • [ Python ]
      • [ C & C++ ]
      • [ Javascript ]
      • [ Shell Script ]
    • # Network
      • [ GNS3 ]
      • [ Coding ]
      • [ 용어 정리 ]
      • [ Network ]
      • [ Packet Tracer ]
    • # VMware
      • [ VDI 관리서버 설치 ]
      • [ vSphere ]
      • [ vCenter ]
      • [ Horizon ]
      • [ Aria ]
      • [ vGPU ]
      • [ Ect ]
    • # Script
    • # Docker
      • [ Docker 이론 ]
      • [ Docker 실습 ]
    • # Cloud
      • [ Cloud ]
      • [ AWS Cloud ]
    • # NIVIDIA
      • [ 실습 ]
    • # Storage
      • [ TrueNas 실습 ]
    • # 알고리즘 문제풀이&연습
      • [ Algorithm ]
      • [ BaekJoon ]
      • [ CodeUp -기초 100제 ]
    • # Study
      • [ 영어 공부 ]
      • [ # TroubleShooting ]
      • [ 이것이 리눅스다 ]
      • [ Big Network Design ]
      • [ 시스코 아카데미 패킷트레이서 ]
      • [ 성공과 실패를 결정하는 1%의 네트워크원리 ]
    • # 결과물
      • [ 개인 프로젝트 ]
      • [ 자격증 & 수료 ]
      • [ 프로그램 완성작품 ]
    • # 관심 분야
      • [ 주식 투자 ]
      • [ Machine learning ]
    • # 개인기록 및 창고
      • [ 유용한 정보Tips ]

블로그 메뉴

  • KyungKing's GitHub
  • KyungKing's 투자 이야기
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • network
  • 코딩
  • socket
  • 공부
  • 네트워크
  • ESXi
  • c++
  • Packet Tracer
  • VMware
  • C언어
  • cisco
  • 이것이리눅스다
  • vCenter
  • Algorithm
  • CodeUp
  • 알고리즘
  • Linux
  • Router
  • 허언증

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
이론과 실습 사이
[C & C++] send(), recv() / sendto(), recvfrom() 정리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.