在 Linux 中,可以使用 socket()
函數創建一個套接字,并使用 setsockopt()
函數設置 SO_REUSEADDR
選項來實現端口復用。
具體步驟如下:
socket()
函數創建一個套接字,指定域、類型和協議。例如,創建一個 TCP 套接字:int sockfd = socket(AF_INET, SOCK_STREAM, 0);
setsockopt()
函數設置 SO_REUSEADDR
選項。該選項表示允許地址和端口在同一套接字關閉后立即被重新使用。例如:int optval = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(8080);
bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
listen(sockfd, 10);
struct sockaddr_in client_addr;
socklen_t client_addr_len = sizeof(client_addr);
int client_fd = accept(sockfd, (struct sockaddr *)&client_addr, &client_addr_len);
以上就是使用 Linux 套接字實現端口復用的基本步驟。需要注意的是,端口復用只能用于同一套接字上相同的地址和端口組合,如果需要復用其他地址和端口組合,則需要創建多個套接字。