Linuxのsetsockopt関数の使い方は?

Linux では、setsockopt 関数はソケットオプションを設定するために使用されます。使用法は以下のとおりです。

#include <sys/types.h>
#include <sys/socket.h>

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

パラメーターが以下のように解釈されます。

  1. sockfd:ソケットファイル記述子
  2. レベル: オプションにおけるプロトコルレイヤー。ソケットオプションの場合は通常 SOL_SOCKET。
  3. オプションの名前。
  4. optval: オプション値を指すポインター。
  5. オプションの値の长度。

setsockopt関数はソケットオプションの値を設定するために使用されます。

  1. SO_REUSEADDR:ローカルアドレスの再利用が可能
  2. SO_KEEPALIVE:TCPのキープアライブ機能を有効にする。
  3. SO_RCVBUF: 受信バッファサイズを設定する。
  4. SO_SNDBUF:送信バッファサイズの指定。
  5. SO_ERROR: ソケットのエラー状態の取得

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

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>

int main() {
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        perror("socket");
        return 1;
    }

    int reuse = 1;
    if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0) {
        perror("setsockopt");
        return 1;
    }

    // 其他操作

    close(sockfd);
    return 0;
}

上述コードはソケットを作成し、SO_REUSEADDRオプションを1に設定し、アドレスの再利用を許可します。

bannerAds