setsockopt
是 C++ 中用于设置套接字选项的函数
#include#include #include #include 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) 文档。