嗨,我正在实现 P2P 聊天应用程序,其中服务器将调解交换 IP 和端口以连接对等方。我收到 WSAEAFNOSUPPORT 10047 错误。
我已经创建了 UDP 套接字
sockfd = 套接字(AF_INET,SOCK_DGRAM,IPPROTO_UDP);然后我将它绑定到本地 ip 和端口。
if (bind(sockfd,(struct sockaddr *)&localaddr,sizeof(localaddr))<0) { Error_Code("create_socket:bind()"); 返回-1;}
然后我正在联系服务器。
// 连接服务器
sendto(sockfd,pBuffer,sizeof (nMessageType),0,(const sockaddr *)&config.serverAddr,size);
服务器跟踪其他连接的对等点。一旦对等点连接到服务器,它返回其他对等点的 IP 和端口。因此对等点可以使用 IP 和端口直接连接到其他对等点。但我在向其他对等方发送数据时出错
// 向对等方发送数据
int ret = sendto(sockfd,sendBuf, sizeof(nMessagetype),0,(const sockaddr *)&m_peer.publicaddr,sockAddLen); 它返回 10047 WSAEAFNOSUPPORT 错误。
在这里,我使用相同的套接字来联系服务器和其他对等方是这个原因吗?我不明白这里出了什么问题。它能够与服务器正确连接,但无法连接其他对等方。