我正在尝试编写一个基本的服务器套接字程序。我使用以下代码绑定服务器套接字。
/* Bind the server socket */
if (bind(serversock, (struct sockaddr *) &server, sizeof(server)) < 0)
{
perror("Failed to bind the server socket");
exit(1);
}
当我第一次运行程序时,它工作正常,但是当我第二次运行它时,我收到此错误:
我认为当我第二次运行该程序时,它会出现此错误,因为该端口已经链接到我第一次运行的程序。有人能告诉我如何关闭当前使用的端口吗?或者给我一些可以解决这个错误的东西。
答案 0 :(得分:3)
终止绑定端口的进程:
fuser -TERM 80/tcp #kills processes on tcp port 80 using signal SIGTERM
然后重新开始。
TCP套接字通常暂时不可重用(几分钟),除非它们在绑定之前设置了SO_REUSEADDR
选项(使用setsockopt
)。
(此选项在某种程度上会降低稳健性,但在测试环境中使用应该相当安全。)