18,356
社区成员
发帖
与我相关
我的任务
分享
// 如果socket已经打开
if ( IsOpen() )
return false;
SOCKADDR_IN sockAddr = { 0 };
//创建一个socket
SOCKET sock = socket(nProtocol, nType, 0);
if (INVALID_SOCKET != sock)
{
// 让socket绑定一个地址
TCHAR strHost[HOSTNAME_SIZE] = { 0 };
if (false == CSocketComm::GetLocalName( strHost, sizeof(strHost)/sizeof(TCHAR)))
{
closesocket( sock );
return false;
}
//AfxMessageBox(strHost);
sockAddr.sin_addr.s_addr = htonl( CSocketComm::GetIPAddress( strHost ) );
sockAddr.sin_family = nProtocol;
if ( SOCKET_ERROR == bind(sock, (LPSOCKADDR)&sockAddr, sizeof(SOCKADDR_IN)))
{
closesocket( sock );
return false;
}
// 获得目标地址
if ( strDestination[0]) {
sockAddr.sin_addr.s_addr = htonl(CSocketComm::GetIPAddress( strDestination ) );
}
// 获得端口
sockAddr.sin_port = htons( GetPortNumber( strServiceName ) );
if ( 0 != sockAddr.sin_port )
{
// 连接服务器
if (SOCKET_ERROR == connect( sock, (LPSOCKADDR)&sockAddr, sizeof(SOCKADDR_IN)))
//到了这一步就 return false;
{
closesocket( sock );
return false;
}
// 保存socket
m_hComm = (HANDLE) sock;
return true;
}
}
return false;