Hello evenyone:
I have this problem for several hours.Let's have a look at my code below:
BOOL bReuseAddr=TRUE;
setsockopt(m_sConnServer,SOL_SOCKET,SO_REUSEADDR,(char*)&bReuseAddr,sizeof(BOOL));
bind(m_sConnServer,(sockaddr*)&bindAddr,sizeof(sockaddr));
setsockopt(m_sListen,SOL_SOCKET,SO_REUSEADDR,(char*)&bReuseAddr,sizeof(BOOL));
bind(m_sListen,(sockaddr*)&bindAddr,sizeof(sockaddr));
setsockopt(m_sHole,SOL_SOCKET,SO_REUSEADDR,(char*)&bReuseAddr,sizeof(BOOL));
bind(m_sHole,(sockaddr*)&bindAddr,sizeof(sockaddr));
if(connect(m_sConnServer,(sockaddr*)&m_serverAddr,sizeof(sockaddr))==0)
send(m_sConnServer,(char*)peer,sizeof(PEER_INFO),0);
listen(m_sListen,20);
Sleep(4000); for(int i=0;i!=10;i++)
{
if(connect(m_sHole,(sockaddr*)&m_serverAddr,sizeof(sockaddr))==0) {
cout<<"send "<<send(m_sHole,(char*)peer,sizeof(PEER_INFO),0)<<endl;
break;
}
}
It works as i want it to be until reach the line i add comment.
I have read msdn for many times,but i don't understand "When bind is called with a wildcard address (involving ADDR_ANY), a WSAEADDRINUSE error could be delayed until the specific address is committed. This could happen with a call to another function later, including connect, listen, WSAConnect, or WSAJoinLeaf." well.
I want to know what's the meaning of the archives' explaination,and How to avoid such
Error.Thank you very much~