在 Linux 中,setsockopt()
函數(shù)用于設(shè)置套接字選項。要設(shè)置網(wǎng)絡(luò)參數(shù),您需要根據(jù)所需的參數(shù)選擇相應(yīng)的選項和級別。以下是一些常見的網(wǎng)絡(luò)參數(shù)及其設(shè)置方法:
int sockfd = socket(AF_INET, SOCK_STREAM, 0); // 創(chuàng)建一個 TCP 套接字
int result = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)); // 允許地址重用
int rcvbuf_size = 4096; // 4 KB
result = setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf_size, sizeof(rcvbuf_size));
int sndbuf_size = 4096; // 4 KB
result = setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sndbuf_size, sizeof(sndbuf_size));
struct timeval tv;
tv.tv_sec = 5; // 5 秒
tv.tv_usec = 0;
result = setsockopt(sockfd, IPPROTO_TCP, TCP_RCVTIMEO, (char *)&tv, sizeof(tv));
struct timeval tv;
tv.tv_sec = 5; // 5 秒
tv.tv_usec = 0;
result = setsockopt(sockfd, IPPROTO_TCP, TCP_SNDTIMEO, (char *)&tv, sizeof(tv));
int result = setsockopt(sockfd, IPPROTO_IP, IP_ROUTE_TABLE, &rt_table, sizeof(rt_table));
請注意,上述示例中的參數(shù)值和選項可能因操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議的不同而有所變化。在設(shè)置網(wǎng)絡(luò)參數(shù)時,請確保查閱相應(yīng)操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議的文檔以獲取正確的選項和級別。