Linuxでsetsockoptを使ってバッファを設定する方法は何ですか?

Linuxでは、ソケットのバッファサイズを設定するためにsetsockopt関数を使用することができます。setsockopt関数のプロトタイプは以下の通りです:

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

そのうち、sockfdはソケットの記述子、levelはプロトコルレベル、optnameはオプションの名前、optvalはオプションの値のポインタ、optlenはオプションの値の長さです。バッファサイズを設定する場合、設定するオプション名は SO_RCVBUF(受信バッファ)および SO_SNDBUF(送信バッファ)です。以下は受信バッファサイズを設定する例コードです。

int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {

perror(“socket creation failed”);

 

exit(EXIT_FAILURE); } int rcvbuf_size = 1024 * 1024; // 设置接收缓冲区大小为1MB if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf_size, sizeof(rcvbuf_size)) < 0) {

 

perror(“setsockopt failed”);

 

exit(EXIT_FAILURE); }


同じように、送信バッファサイズを設定する際にも同様の方法が使えます。ここでの注意点は、バッファサイズはバイト単位の整数値であることです。

bannerAds