【发布时间】:2012-03-01 17:48:11
【问题描述】:
我浏览过很多帖子和论坛,而且我是套接字编程的新手。我的代码的主要部分类似于 BIND ERROR : Address already in use
但后来我更改了代码,以便像这样包含“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返回的值。 -
你确定你在某处没有挥之不去的进程吗?
-
绑定失败时setsockopt的返回值为0,但如果服务器up则不显示返回值。