繁体   English   中英

绑定端口“地址已在使用中”时出错Unix中的TCP套接字编程

[英]error in binding port “Address already in use” TCP socket programming in unix

我已经浏览了许多帖子和论坛,并且是套接字编程的新手。 我的代码的大部分与BIND ERROR相似:地址已在使用中

但是后来我更改了代码,以便包含“ setsockopt”函数,如下所示:

const char* port="5555";
int opt=1;
portno=atoi(port);
//parameters for server address
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(portno);
serv_addr.sin_addr.s_addr=INADDR_ANY;
//bind the socket to the address
setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,(const char *)&opt,sizeof(int));


 if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{close(sockfd);
error("error in binding port!");
}

但是仍然我得到了错误。 我必须关闭终端并重新启动它才能再次使用该端口。 我想使用硬编码端口(如我在上面的代码中提到的)

                                                            Thanks a lot in advance

检查端口是否正在使用中。 telnet该端口或使用netstat -a 它应该在使用中(如错误所示),并终止相应的进程。 也许使用ps查找过程。

端口号一次只能由一个应用程序使用。 这意味着您不能两次启动相同的程序并期望它们都绑定到同一端口。

SO_REUSEADDR用于绑定到某个地址的套接字已经关闭时,可以直接再次使用相同的地址(ip地址/端口对)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM