扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

Linux涓媑etsockopt涓巗etsockopt鍑芥暟鎬庝箞浣跨敤

扬州沐宇科技
2023-10-23 13:05:42
linux

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>

扫码添加客服微信