一个使用 setsockopt sol_socket so_rcvbuf 例子
时间: 2024-05-03 18:16:43 浏览: 125
下面是一个使用 setsockopt 函数设置 socket 接收缓冲区大小的例子:
```
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("socket");
exit(1);
}
int rcvbuf_size = 1024 * 1024; // 1MB
int ret = setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf_size, sizeof(rcvbuf_size));
if (ret < 0) {
perror("setsockopt");
exit(1);
}
// 其他操作
return 0;
}
```
在上面的例子中,首先创建了一个 TCP socket,然后使用 setsockopt 函数设置了该 socket 的接收缓冲区大小为 1MB(1024 * 1024 字节)。这里使用了 SO_RCVBUF 参数来指定需要设置的选项,SOL_SOCKET 参数表示要设置的是 socket 级别的选项。最后,需要传入一个指向缓冲区大小的指针和该指针所指向的缓冲区大小。
阅读全文