如何在socket服务器应用程序中重用端口?

时间:2016-11-30 14:43:03

标签: c sockets server port

我正在尝试编写一个基本的服务器套接字程序。我使用以下代码绑定服务器套接字。

/* Bind the server socket */
if (bind(serversock, (struct sockaddr *) &server, sizeof(server)) < 0)
{
    perror("Failed to bind the server socket");
    exit(1);
}

当我第一次运行程序时,它工作正常,但是当我第二次运行它时,我收到此错误:

error

我认为当我第二次运行该程序时,它会出现此错误,因为该端口已经链接到我第一次运行的程序。有人能告诉我如何关闭当前使用的端口吗?或者给我一些可以解决这个错误的东西。

1 个答案:

答案 0 :(得分:3)

终止绑定端口的进程:

 fuser -TERM 80/tcp #kills processes on tcp port 80 using signal SIGTERM

然后重新开始。

TCP套接字通常暂时不可重用(几分钟),除非它们在绑定之前设置了SO_REUSEADDR选项(使用setsockopt)。

(此选项在某种程度上会降低稳健性,但在测试环境中使用应该相当安全。)