ソケットのバッファサイズの設定方法

ソケットによるネットワーク通信では、バッファのサイズを設定することで、データの転送速度や効率を制御できます。ソケットのバッファサイズは、次の 2 つの方法で設定できます。

  1. setsockopt関数を利用する:setsockopt関数を利用することで、ソケットのバッファサイズを設定することが可能です。手順としては以下になります。
#include <sys/socket.h>

int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

sockfd はソケットファイルディスクリプタ、level はプロトコル階層(通常は SOL_SOCKET)、optname はオプション名(通常は SO_SNDBUF(送信バッファ)または SO_RCVBUF(受信バッファ))、optval はバッファサイズのポインタ、optlen はバッファサイズのサイズです。

サンプルコードは以下の通りです。

#include <sys/socket.h>

int sockfd;

int send_buffer_size = 1024 * 1024; // 设置发送缓冲区大小为1MB
if (setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &send_buffer_size, sizeof(send_buffer_size)) == -1) {
    perror("setsockopt");
    exit(1);
}

int recv_buffer_size = 1024 * 1024; // 设置接收缓冲区大小为1MB
if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &recv_buffer_size, sizeof(recv_buffer_size)) == -1) {
    perror("setsockopt");
    exit(1);
}
  1. /etc/sysctl.conf
bannerAds