18,356
社区成员
发帖
与我相关
我的任务
分享
USHORT CBaseSocket::Bind(ULONG ulHost, USHORT usPort, BOOLEAN bTrav /* = FALSE */)
{
sockaddr_in svrAddr;
svrAddr.sin_family = AF_INET;
svrAddr.sin_addr.s_addr = ulHost;
svrAddr.sin_port = htons(usPort);
if (!bTrav)
return (bind(m_Socket, (const sockaddr*)&svrAddr, sizeof(svrAddr)) == SOCKET_ERROR) ? 0 : usPort;
else
{
USHORT usPortTrav = usPort;
while(TRUE)
{
if(bind(m_Socket, (const sockaddr*)&svrAddr, sizeof(svrAddr)) == SOCKET_ERROR)
{
svrAddr.sin_port = htons(++usPortTrav);
if (usPort == 65535)
return 0;
}
else
return usPortTrav;
}
}
}