关于UDP的NAT打洞
hlt 2006-01-21 03:30:01 1. 我上网看到CONE方式打洞是通过服务端转发打洞消息到对方客户端,再由对方客户端返回消息到源客户端的洞.以完成双方打洞过程.但我想了另一种方法,但不知可不可行,我的方法是客户端到服务端通过心跳维持一个洞,而P2P时不用另打洞了.如C1向服务端心跳,服务端记录C1的洞.C2也是一样.当C2与C1通讯时,只要向服务端请求C1的打洞信息,就住C1的洞发消息,C1要发消息,也向服务端请求C2的洞的信息.这种方式不知可不可行,请大家给点意见.
2.我是做一个点对点对聊程序,用来学习P2P的.用UDP,客户端用重叠模式接收的.我有一个全局的SOCKET变量,用来保存监听的SOCKET,因为要定时向服务端打洞.所以我必需要用这SOCKET向服务端打洞.因为我UDP监听是通过循环WSARECVFROM阻塞来达到监听的目的,我尝试在另一线程通过该SOCKET向服务端打洞.但每次都在SENDTO时被阻塞.若我不用监听,则可以顺利发送.请问有什么方法可以使该SOCKET可以双工运行?(不过我的发送是用SENDTO而不是WSASENDTO,而SOCKET是用WSASOCKET建立的.请问这样有问题吗?)