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
- git
- mybatis
- libuv
- HTTP
- AWS
- r
- cache
- Heap
- spring
- 데이터통신
- github
- ajax
- VCS
- nodejs
- 네트워크
- Java
- reactive
- reactor
- mongodb
- network
- redis
- html
- Linux
- effective
- Elk
- javascript
- NoSQL
- Lombok
- Static
- socket
Archives
- Today
- Total
빨간색코딩
소켓 옵션과 관련 API 본문
1. 소켓의 옵션
아래는 프로토콜 레벨과 옵션 이름들이다.
1-1. SOL_SOCKET : 일반적인 옵션
- SO_SNDBUF : 송신버퍼 크기 설정
- SO_RCVBUF : 수신버퍼 크기 설정
- SO_REUSEADDR : 지역 주소(IP,Port) 재사용여부
- SO_KEEPALIVE : 주기적으로 연결 여부 확인
- SO_BROADCAST : 브로드캐스팅 허용여부
- SO_DONTROUTE : 라우팅 테이블 참조과정 생략여부
- SO_OOBINLINE
- SO_ERROR
- SO_TYPE : 소켓의 타입(변경 불가)
1-2. IPPROTO_IP : IP 패킷 관련
- IP_TOS : Type of Service 변경
- IP_TTL : Time-To-Live 변경
- IP_MULTICAST_TTL : 멀티캐스트 패킷의 TTL 변경
- IP_MULTICAST_LOOP : 멀티캐스트 패킷의 루프백 여부
- IP_MULTICAST_IF : 멀티캐스트 패킷을 보낼 인터페이스 설정
1-3. IPPROTO_TCP : TCP관련
- TCP_KEEPALIVE : keep alive 시간 간격 지정
- TCP_NODELAY : Nagle 알고리즘 사용 여
- TCP_MAXSEG : TCP 최대 세그먼트 지정
2. 소켓 옵션 관련 API
#include <sys/socket.h>
2-1. 소켓 옵션의 설정상태 참조
int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);
2-1-1. 반환값
성공 = 0, 실패 = -1 반환
2-1-2. 인자
- sock: 소켓 파일 디스크립터 전달
- level: 확인할 옵션의 프로토콜 레벨 전달
- optname: 옵션이름 전달
- optval: 참조확인 결과 저장을 위한 버퍼의 주소 값 전달
- optlen: 4번째 인자의 버퍼크기를 담고 있는 변수의 주소 값 전달
2-2. 소켓 옵션의 설정상태 변경
int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);
2-2-1. 반환값
성공 = 0, 실패 = -1 반환
2-2-2. 인자
- sock: 소켓 파일 디스크립터 전달
- level: 변경할 옵션의 프로토콜 레벨 전달
- optname: 옵션이름 전달
- optval: 변경할 옵션정보를 저장한 버퍼의 주소 값 전달
- optlen: 4번째 인자의 버퍼크기 전달
'C' 카테고리의 다른 글
make 유틸리티 (0) | 2017.05.20 |
---|---|
hostent 구조체, 도메인 관련 API (0) | 2017.04.04 |
아두이노 bluetooth (0) | 2017.04.02 |
아두이노 Digita I/O & Analog I/O (0) | 2017.04.02 |
TCP소켓 Half-close 기법 (0) | 2017.03.28 |
Comments