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 );
CString *lpstrPeerIP = new CString;//注3
UI

本文介绍了CAsyncSocket::GetPeerName()函数在获取连入客户端IP和端口时的使用方法,包括两个重载函数的用法,强调了lpSockAddrLen参数的重要性,指出其必须作为输入输出参数正确设置。同时提醒开发者注意端口的网络序到本机序的转换,以及在使用指针时的内存管理,特别是在客户端连接本机时可能返回的情况。
1630

被折叠的 条评论
为什么被折叠?



