堆栈溢出用户!
我有一个必须处理 p2p 的应用程序,这就是我进行 UDP 打孔的方式。但我在实施时遇到了麻烦。希望你能给我一些建议。
我有服务器,它运行完美,可以互相介绍客户端,但客户端无法连接可能是因为我的小 exp 使用套接字。所以,客户端算法是:
- 创建 udp 套接字 ( socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); )
- 通过sendto函数向服务器发送消息
- 使用recvfrom储物柜功能从服务器获取答案
在这 3 个步骤之后,我得到了对等端点。接下来,我尝试以两种方式连接客户端:
方式1:
- 使用同一个套接字通过sendto函数向对等方发送数据,但传递另一个sockaddr
- 使用recvfrom储物柜功能收听(此时我收到WSAECONNRESET错误)
方式2:
- 创建新套接字
- 绑定它
- 使用它向对等方发送数据
- 听
这样,一个客户端绑定失败,另一个客户端监听失败,并出现WSAEADDRINUSE和WSAECONNRESET错误。我显然做错了什么,您的帮助将不胜感激。提前致谢。
PS想分享一篇关于UDP打孔的好文章,以帮助那些不熟悉这种技术的人:http ://www.brynosaurus.com/pub/net/p2pnat/