WSAEAFNOSUPPORT 错误

发布于 2024-09-25 13:19:39 字数 826 浏览 4 评论 0原文

你好 我正在实现 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 错误。

在这里,我使用相同的套接字来联系服务器和其他对等方,这是这个原因吗? 我不明白这里出了什么问题。 它能够与服务器正确连接,但无法连接其他对等点。

Hi
I am implementing P2P chatting application where server will mediator for exchangeing IP and port to connecting peer.
I am getting WSAEAFNOSUPPORT 10047 error .

I have created UDP
socket

sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP );
then iam binding it to local ip and port.

if (bind(sockfd,(struct sockaddr *)&localaddr,sizeof(localaddr))<0)
{
Error_Code("create_socket:bind()");
return -1;
}

then I am contacting the server.

// connecting with server

sendto(sockfd,pBuffer,sizeof (nMessageType),0,(const sockaddr *)&config.serverAddr,size);

server keeps track of the other connected peer.once peer connects to the server it return ip and port of other peer.so a peer can use IP and port to directly connect to other peer.
but i am getting error while sending data to to other peer

// sending data to peer

int ret = sendto(sockfd,sendBuf,
sizeof(nMessagetype),0,(const sockaddr *)&m_peer.publicaddr,sockAddLen);
it return 10047 WSAEAFNOSUPPORT error.

Here I am using same socket to contact server and other peer is this reason for this?
I don't understand what is going wrong here.
It is able to connect with server properly but it is failing to connect other peer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白云不回头 2024-10-02 13:19:39

sendto 中指出并用于实际错误消息 WSAEAFNOSUPPORT 地址您用来发送的套接字与您发送的套接字不属于同一系列。

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

Pointed out in the sendto and for the actual error message WSAEAFNOSUPPORT the address you are using to send to is not of the same family as the socket you are sending on.

You have to make sure that the address in m_peer.publicaddr is of the same family as sockfd.
For instance, if you send an address for IPv6, AF_INET will not work (it would have to be AF_INET6)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文