代码之家  ›  专栏  ›  技术社区  ›  Vikram Ranabhatt

WSAEAFNOSUPPORT错误

  •  0
  • Vikram Ranabhatt  · 技术社区  · 14 年前

    您好! 我正在实现P2P聊天应用程序,在该应用程序中,服务器将通过中介交换IP和端口来连接对等机。 我收到wsaeafnosupport 10047错误。

    我已经创建了UDP 插座

    sockfd=插座(af_inet、sock_dgram、ipproto_udp); 然后IAM将其绑定到本地IP和端口。

    if(bind(sockfd,(struct sockaddr*)&localaddr,sizeof(localaddr))<0) { 错误_code(“create_socket:bind()”); 返回-1; }

    然后我联系服务器。

    //连接服务器

    sendto(sockfd,pbuffer,sizeof(nmessagetype),0,(const sockaddr*)和config.serveradr,size);

    服务器跟踪另一个连接的对等端。一旦对等端连接到服务器,它将返回其他对等端的IP和端口。因此,对等端可以使用IP和端口直接连接到其他对等端。 但我在向其他对等发送数据时出错

    //向对等端发送数据

    int ret=发送到(sockfd,sendbuf, sizeof(nmessagetype),0,(const sockaddr*)&m_peer.publicaddr,sockaddlen); 返回10047 WSAEAFNOSUPPORT错误。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   default    14 年前

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

    你必须确保地址在 m_peer.publicaddr 是同一个家庭的 sockfd . 例如,如果您发送一个IPv6地址, AF_INET 不起作用 AF_INET6 )