【发布时间】:2011-04-18 19:40:44
【问题描述】:
嗨 我正在实现 P2P 聊天应用程序,其中服务器将调解交换 IP 和端口以连接对等方。 我收到 WSAEAFNOSUPPORT 10047 错误。
我已经创建了 UDP 插座
sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP ); 然后将其绑定到本地 ip 和端口。
if (bind(sockfd,(struct sockaddr *)&localaddr,sizeof(localaddr))
然后我正在联系服务器。
//连接服务器
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 错误。
我在这里使用同一个套接字来联系服务器和其他对等方是这个原因吗? 我不明白这里出了什么问题。 它能够与服务器正确连接,但无法连接其他对等方。
【问题讨论】:
-
你解决了吗?你有没有四处检查这两个家庭是否相同?
标签: winsock2