Socket编程bind错误码98 EADDRINUSE 处理方法

出现这样的错误可能有两个原因,第一是因为当前主机已经有服务器进程在调用bind和listen在监听我们的目标端口,如果我们在这时再次调用bind函数进行绑定的话,则会产生系统调用错误。第二个原因可能是因为我们所需要bind的目标端口是本机socket已经连接的端口。

解决方法:设置套接字SO_REUSEADDR,所有的TCP服务器都应当指定该选项。

指定方法:

 int flag = 1;
if (setsockopt(listen_handle_, SOL_SOCKET, SO_REUSEADDR, (const char*)&flag, sizeof(flag)) < 0)
{
    printf("socket setsockopt error=%d(%s)!!!\n", errno, strerror(errno));
    exit(1);
}

 

你可能感兴趣的:(网络同步,Linux,C++)