2010-09-29 8 views
0

嗨 我正在實施P2P聊天應用程序,其中服務器將介體用於交換IP和端口到連接對等體。 我收到WSAEAFNOSUPPORT 10047錯誤。WSAEAFNOSUPPORT錯誤

我已創建UDP 插座

的sockfd =插座(AF_INET,SOCK_DGRAM,IPPROTO_UDP); 然後iam綁定到本地ip和端口。

如果(綁定(的sockfd,(結構sockaddr *)& localaddr,的sizeof(localaddr))< 0) { ERROR_CODE( 「create_socket:綁定()」); return -1; }

然後我聯繫服務器。

//與服務器連接

SENDTO(的sockfd,p緩衝器,的sizeof(nMessageType),0,(常量的sockaddr *)& config.serverAddr,大小);

服務器跟蹤所連接的其他peer.once同行連接到它返回的IP和其他港口peer.so同行可以使用IP和端口直接連接到其他同行的服務器。 但我而將數據發送到其它對等體獲取誤差

//將數據發送到對等

INT RET = SENDTO(的sockfd,sendBuf, 的sizeof(nMessagetype),0,(常量的sockaddr *)& m_peer.publicaddr,sockAddLen); 它返回10047 WSAEAFNOSUPPORT錯誤。

在這裏,我使用相同的套接字來聯繫服務器和其他同行是這個原因嗎? 我不明白這裏出了什麼問題。 它能夠正確連接服務器,但無法連接其他對等端。

+0

您解決了嗎?你有沒有想過檢查這兩個家庭是否一樣? – Default 2010-10-01 13:20:27

回答

1

指出在sendto和實際的錯誤信息WSAEAFNOSUPPORT您用來發送到的地址是不是你發送的套接字家族。

你必須確保在m_peer.publicaddr地址是同一個家族的sockfd的。 例如,如果您發送IPv6地址,AF_INET將不起作用(它必須是AF_INET6