在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
:套接字文件描述符。level
:選項的協議層。對于套接字選項,通常為SOL_SOCKET
。optname
:選項名稱。optval
:指向選項值的指針。optlen
:選項值的長度。setsockopt
函數用于設置套接字選項的值。常用的選項名稱包括:
SO_REUSEADDR
:允許重用本地地址。SO_KEEPALIVE
:啟用TCP的keepalive功能。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,允許地址重用。