以UDP方式实现的P2P,客户端是监听服务器的ip和端口还是监听本地的ip和端口?
如果两台处于同一个局域网内,那又该如何????

解决方案 »

  1.   

    我是这样做的.
    服务器                                            客户端
    (socket的监听<socket的服务器端>)<------------(socket的发送<socket的客户端>)
    (socket的发送<socket的客户端>)-------------->(socket的监听<socket的服务器端>)我认为是p2p的每个端点都要建立一个服务端和客户端,因为是单功通讯的.
      

  2.   

    如果这样,那么流程:
    客户机A(IP+端口) ->网关(新IP+新端口) ——服务器 ——网关(新IP+新端口)->客户机B(IP+端口) 这样,客户B得到客户A要求连接的请求后,
    所谓的打洞就是给客户A发送UDP请求,
    然后客户A那里也是循环监听本地端口。
    我的疑惑是,客户B发给客户A的信息,应当是发送到它所属的网关去吧,
    这样,网关会自动转发到客户A嘛???如果是这样,我怎么知道本机是通过哪个端口发送数据呢?(就是客户A的端口)
      

  3.   

    udpclient = new UdpClient ( 8000 ) ;//指定端口
      

  4.   

    To  littlekeen(keen) :
    就是说,只用监听本地8000端口,就可以了吗??
    是不是udp发送数据的默认端口是8000啊???
      

  5.   

    怎么没人回答啊,顶一下如果我从服务器download下来客户机A的网关ip和端口,而客户机A也从服务器download下来我的网关ip和端口,那么我和客户机A是否可以直接发信息通信了??????
      

  6.   

    udp  你自己可以指定端口和主机地址,client端只需要指定本地接收数据的端口就可以啦。
    udp  没有发送数据的默认端口,如果你不指定server的发送端口,你的client又如何接收信息呢 ?P2P之UDP穿透NAT的原理与实现:
    http://www.ppcn.net/n1306c2.aspx