我已经经历了许多帖子和论坛,我是新的套接字编程。我的代码主要部分类似于 BIND ERROR : Address already in use错误在绑定端口“地址已在使用”unix中的TCP套接字编程
但后来我改变了我的代码,这样我有“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
检查'setsockopt'返回的值。 – cnicutar 2012-02-09 08:56:17
你确定你没有一个挥之不去的进程吗? – 2012-02-09 08:56:59
当绑定失败时,setsockopt的返回值为0,但是如果服务器启动,则不显示返回值。 – arvind 2012-02-09 09:38:55