mfc网口接收时获取数据来源地址
时间: 2023-07-09 19:54:08 浏览: 56
要获取数据来源地址,你需要在网口接收数据的回调函数中,使用套接字的 GetPeerName() 函数来获取对方的 IP 地址和端口号。下面是一个简单的示例代码:
```
void CMySocket::OnReceive(int nErrorCode)
{
// 读取接收缓冲区中的数据
char buffer[1024];
int nRead = Receive(buffer, sizeof(buffer));
// 获取数据来源地址
SOCKADDR_IN addr;
int nLen = sizeof(addr);
GetPeerName((SOCKADDR*)&addr, &nLen);
// 输出数据来源地址和数据内容
CString strAddr;
strAddr.Format(_T("%s:%d"), inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
CString strData(buffer, nRead);
TRACE(_T("Received data from %s: %s"), strAddr, strData);
// 处理接收到的数据
// ...
CSocket::OnReceive(nErrorCode);
}
```
注意,这里使用的是 SOCKADDR_IN 结构体来存储 IP 地址和端口号,需要包含 Winsock2.h 头文件。函数 inet_ntoa() 可以将 IP 地址转换为字符串形式输出。