반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- socket
- 소켓
- HTTP 완벽 가이드
- 크롤링
- Nestjs
- 가천대
- typescript
- 자바스크립트
- 프로그래머스 레벨 2
- BFS
- 프로그래머스
- 레벨 1
- 타입스크립트
- 알고리즘
- type challenge
- dp
- ip
- 그래프
- HTTP
- javascript
- 백준
- Crawling
- 쉬운 문제
- Node.js
- 문자열
- Algorithm
- TCP
- 타입 챌린지
- dfs
- 수학
Archives
- Today
- Total
kakasoo
[TCP/IP] send & recv 입출력 함수 (옵션 정보) 본문
반응형
라즈베리파이를 다루고 있는지라, 이 함수들에 대해서 자세히 볼 수 밖에 없게 되었다.
미리 말하는데, 위의 함수와 동일하게 write와 read함수가 있는데, 거의 비슷하다.
미세한 차이가 있긴 한데, 이 미세한 차이를 느낄 수 있을까, 사실 그걸 위해 설명하는 것이기도 하지만,
send, recv는 옵션을 설정할 수도 있고... usb port 라던가, 입출력 방식에 따른 호환성이 높은 편이라 할 수 있다.ㅌ
리눅스에서의 send & recv 함수
- ssize_t send (int sockfd, const void* buf, size_t nbytes, int flags)
- sockfd // 데이터 전송 대상과의 연결을 의미하는 소켓의 파일 디스크립터, 윈도우에서는 그저 0이었다
- buf // 전송할 데이터를 저장하고 있는 버퍼의 주소 값
- nbytes // 전송할 바이트 수 전달
- flags // 데이터 전송 시에 적용할 추가 옵션 정보
- ssize_t recv (int sockfd, void* buf, size_t nbytes, int flags)
- sockfd // 데이터 수신 대상과의 연결을 의미하는 소켓의 파일 디스크립터 전달
- buf // 수신된 데이터를 저장할 버퍼의 주소 값 전달
- nbytes // 수신할 수 있는 최대 바이트 수 전달
- flags // 데이터 수신 시 적용할 다양한 옵션 정보 전달
윈도우에서는 이미 이 함수들을 다루긴 했지만, 옵션 정보에 관한 내용은 내게도 생소하다.
옵션 정보에 대해서 한 번 보도록 하자.
옵션 | 의미 | send | recv |
MSG_OOB | 긴급 데이터 (Out Of Band data)의 전송을 위한 옵션 | ● | ● |
MSG_PEEK | 입력 버퍼에 수신된 데이터 존재 유무 확인을 위한 옵션 | ● | |
MSG_DONTROUTE | 데이터 전송 과정에서 라우팅 테이블을 참조하지 않을 것을 요구하는 옵션 | ● | |
MSG_DONTWAIT | 입출력 함수 호출 과정에서 블로킹되지 않을 것을 요구하는 옵션 | ● | ● |
MSG_WAITALL | 요청한 바이트 수에 해당하는 데이터가 전부 수신될 때까지 함수 반환을 막는 옵션 | ● |
반응형
'프로그래밍 > 네트워크' 카테고리의 다른 글
[Network] 웹 브라우저가 HTTP 메시지를 만든다 (1) (0) | 2021.01.31 |
---|---|
[TCP/IP] send & recv, MSG_OOB (0) | 2020.07.20 |
[TCP/IP] 멀티 플렉싱 기반의 서버 전체 코드 및 주석 (1) | 2020.07.18 |
[TCP/IP] IO 멀티 플렉싱 기반의 서버, 클라이언트 (0) | 2020.07.18 |
[TCP/IP] 다중 접속 서버의 구현 (0) | 2020.07.18 |