日期:2014-05-16  浏览次数:20835 次

如何清楚linux系统中以退出程序的socket连接?
程序退出时,没有正常关闭socket,linux系统会保持socket的连接状态很长时间,这时在运行同样的程序,就会服务端报错“Address   already   is   use”或客户端“Connection   refused”。这样测试起来很不方便,有没有办法可以让linux系统的这种状态立即消失?

------解决方案--------------------
// set socket
int opt = 1,;;
unsigned int optlen = sizeof(opt);
if(setsockopt(m_sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, optlen) == -1)
{
perror( "setsockopt reuseaddr ");
return -1;
}
else
{
printf( "Setsockopt reuseaddr... OK\n ");
}