stackoverflow用户!UDP穿孔(C++/winsock)
我有一个应用程序必须处理p2p,这就是我如何获得UDP Hole punching。但是我遇到了实施麻烦。希望,你可以给我一些提示。
我有服务器,它工作完美,并介绍客户端彼此,但客户端无法连接,可能是因为我的小型exp与套接字工作。因此,客户端ALGO是:
- 创建UDP套接字(插座(AF_INET,SOCK_DGRAM,IPPROTO_UDP);)通过SENDTO功能
- 使用recvfrom的更衣室功能
- 信息发送到服务器从服务器获得答案
经过这3个步骤后,我获得了对等端点。接下来,我想客户端连接方式有两种:
WAY1:
- 使用同样的套接字发送数据通过同行的sendto功能,但通过另一个SOCKADDR
- 用recvfrom更衣柜功能(并在那一点我得到WSAECONNRESET错误)
Way2:
- 创建新的socket
- 将其绑定
- 用它来发送数据同行
- 听
在这样一个客户端上绑定失败和另一个错误地收听WSAEADDRINUSE和WSAECONNRESET。我明显做错了事,你的帮助将不胜感激。提前致谢。
P.S.想分享UDP打孔的好文章,以帮助那些谁是新的这种技术:http://www.brynosaurus.com/pub/net/p2pnat/
试着看看这个问题:http://stackoverflow.com/questions/8819118/tcp-hole-punching 尽管用UDP做这件事一定比较容易 – Giann