setsockopt 是 C++ 中用于設置套接字選項的函數
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
int main() {
int sockfd; // 創建套接字
struct sockaddr_in server_addr; // 服務器地址結構體
// 創建套接字并綁定到服務器地址
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
std::cerr << "Error creating socket" << std::endl;
return 1;
}
server_addr.sin_family = AF_INET; // IPv4
server_addr.sin_port = htons(8080); // 端口號
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 服務器 IP 地址
if (bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
std::cerr << "Error binding socket" << std::endl;
return 1;
}
// 設置套接字選項:接收緩沖區大小
int recv_buffer_size = 4096;
if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &recv_buffer_size, sizeof(recv_buffer_size)) < 0) {
std::cerr << "Error setting receive buffer size" << std::endl;
return 1;
}
// 設置套接字選項:發送緩沖區大小
int send_buffer_size = 4096;
if (setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &send_buffer_size, sizeof(send_buffer_size)) < 0) {
std::cerr << "Error setting send buffer size" << std::endl;
return 1;
}
// 其他套接字操作...
close(sockfd); // 關閉套接字
return 0;
}
在這個示例中,我們首先創建了一個套接字并將其綁定到服務器地址。然后,我們使用 setsockopt 函數設置了接收和發送緩沖區的大小。請注意,setsockopt 的第一個參數是套接字級別(SOL_SOCKET 表示套接字級別),第二個參數是選項名稱(例如 SO_RCVBUF 和 SO_SNDBUF 分別表示接收和發送緩沖區大?。?,第三個參數是指向選項值的指針,第四個參數是選項值的大小,最后一個參數是選項值的大小。
這只是一個簡單的示例,您可以根據需要設置其他套接字選項。要了解可用的套接字選項,請參閱 socket(7) 文檔。