【问题标题】:WSAEAFNOSUPPORT errorWSAEAFNOSUPPORT 错误
【发布时间】: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


【解决方案1】:

sendto 和实际错误消息WSAEAFNOSUPPORT 中指出,您用于发送的地址与您发送的套接字不属于同一家族。

您必须确保m_peer.publicaddr 中的地址与sockfd 属于同一家族。 例如,如果您发送 IPv6 地址,AF_INET 将不起作用(它必须是 AF_INET6

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2015-03-25
    • 2013-05-15
    相关资源
    最近更新 更多