Linux涓媑etsockopt涓巗etsockopt鍑芥暟鎬庝箞浣跨敤
getsockopt鍑芥暟鐢ㄤ簬鑾峰彇濂楁帴瀛楅€夐」鐨勫綋鍓嶅€硷紝鑰宻etsockopt鍑芥暟鐢ㄤ簬璁剧疆濂楁帴瀛楅€夐」鐨勫€笺€傚畠浠殑浣跨敤鏂规硶濡備笅锛?/p>
getsockopt鍑芥暟鐨勫師鍨嬶細int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
鍙傛暟璇存槑锛?/p>
- sockfd锛氬鎺ュ瓧鎻忚堪绗︼紱
- level锛氶€夐」鎵€灞炵殑鍗忚灞傦紱
- optname锛氶€夐」鐨勫悕瀛楋紱
- optval锛氱敤浜庡瓨鍌ㄩ€夐」鍊肩殑缂撳啿鍖猴紱
- optlen锛氳緭鍏ユ椂涓簅ptval缂撳啿鍖虹殑闀垮害锛岃緭鍑烘椂涓哄疄闄呰幏鍙栫殑閫夐」鍊肩殑闀垮害銆?/li>
绀轰緥浠g爜锛?/p>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
int optval;
socklen_t optlen = sizeof(optval);
// 鑾峰彇TCP_NODELAY閫夐」鐨勫綋鍓嶅€?/span>
getsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &optval, &optlen);
printf("TCP_NODELAY: %d\n", optval);
// 鑾峰彇SO_RCVBUF閫夐」鐨勫綋鍓嶅€?/span>
getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &optval, &optlen);
printf("SO_RCVBUF: %d\n", optval);
return 0;
}
setsockopt鍑芥暟鐨勫師鍨嬶細int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
鍙傛暟璇存槑锛?/p>
- sockfd锛氬鎺ュ瓧鎻忚堪绗︼紱
- level锛氶€夐」鎵€灞炵殑鍗忚灞傦紱
- optname锛氶€夐」鐨勫悕瀛楋紱
- optval锛氭寚鍚戝瓨鏀鹃€夐」鍊肩殑缂撳啿鍖猴紱
- optlen锛歰ptval缂撳啿鍖虹殑闀垮害銆?/li>
绀轰緥浠g爜锛?/p>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
int optval = 1;
socklen_t optlen = sizeof(optval);
// 璁剧疆TCP_NODELAY閫夐」涓?
setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &optval, optlen);
// 璁剧疆SO_RCVBUF閫夐」涓?192
optval = 8192;
setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &optval, optlen);
return 0;
}
娉ㄦ剰锛氬湪浣跨敤杩欎簺鍑芥暟鏃讹紝闇€瑕佸寘鍚浉搴旂殑澶存枃浠讹紙濡?code>sys/socket.h鍜?code>netinet/in.h锛夛紝骞剁‘淇濆湪缂栬瘧鏃堕摼鎺ョ浉搴旂殑搴擄紙濡備娇鐢?code>-lsocket閫夐」锛夈€?/p>
相关问答