socket 设置地址重用
时间: 2023-10-02 15:10:11 浏览: 98
在编程中,有时候需要使用已经被占用的端口,这时候就需要设置地址重用。在 Linux 中,设置地址重用可以通过设置 SO_REUSEADDR 选项来实现。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
int main(int argc, char *argv[]) {
int sockfd, optval = 1;
struct sockaddr_in addr;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket error");
exit(EXIT_FAILURE);
}
if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0) {
perror("setsockopt error");
exit(EXIT_FAILURE);
}
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
perror("bind error");
exit(EXIT_FAILURE);
}
listen(sockfd, 10);
// ...
return 0;
}
```
在上面的代码中,我们创建了一个 TCP 套接字,并设置 SO_REUSEADDR 选项为 1。然后绑定了一个本地地址和端口,并开始监听连接。这样我们就能够在同一台机器上启动多个使用同一端口号的进程了。
阅读全文