CAsyncSocket::GetPeerName()有两个重载:
BOOL GetPeerName( CString& rPeerAddress, UINT& rPeerPort );
BOOL GetPeerName( SOCKADDR* lpSockAddr, int* lpSockAddrLen );
当函数正常执行时,返回非0值;如果返回0,可以通过调用GetLastError() 函数取得错误码;
BOOL GetPeerName( SOCKADDR* lpSockAddr, int* lpSockAddrLen );
SOCKADDR_IN* lpSockAddrIn = new SOCKADDR_IN;
int nPeerLen =sizeof(SOCKADDR_IN);//注1
if(client.GetPeerName((SOCKADDR*)lpSockAddrIn,&nPeerLen)){//client为CSocket类实例
TRACE("GetPeerName Success:%s:%d",
inet_ntoa(lpSockAddrIn->sin_addr),ntohs(lpSockAddrIn->sin_port));//注2
}else{
TRACE("GetPeerName ErrorCode:%d\n",GetLastError());
}
delete lpSockAddrIn;
BOOL GetPeerName( CString& rPeerAddress, UINT& rPeerPort );