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);
パラメーターが以下のように解釈されます。
- sockfd:ソケットファイル記述子
- レベル: オプションにおけるプロトコルレイヤー。ソケットオプションの場合は通常 SOL_SOCKET。
- オプションの名前。
- optval: オプション値を指すポインター。
- オプションの値の长度。
setsockopt関数はソケットオプションの値を設定するために使用されます。
- SO_REUSEADDR:ローカルアドレスの再利用が可能
- SO_KEEPALIVE:TCPのキープアライブ機能を有効にする。
- SO_RCVBUF: 受信バッファサイズを設定する。
- SO_SNDBUF:送信バッファサイズの指定。
- 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に設定し、アドレスの再利用を許可します。