用http协议来通信。
保证畅通无阻。

解决方案 »

  1.   

    1.A:服务器。Servlet实现。接受客户端请求。
    2.B1,B2,B3,...,Bn , n个客户端。
    每个客户端的IP在 Server A列表上。3.任何一个客户端Bi (1<=i<=n),通过http协议连接到Server A。
    4.每个用户Bi,启动软件后都来Server A报到。
    5.任何一个Bi,呼叫某个人Bj的时候,http连接到Server A,查看Bj是否在线。
    6.若Bj在线,ServerA接收Bi发出的信息。中转发给 Bi。
    7.okay!
      

  2.   

    我想楼上的大哥理解我的意思了。你说的我已经自己可以解决的。
    我的意思是:如果客户端是通过代理上网的。服务器该存放这个客户端的地址,但这个客户是通过代理上的,所以这个ip地址是代理服务器的还是自己在局域网里的ip???而且其他的用户如何直接的连接到这个客户?我这个软件想通过p2p实现
      

  3.   

    直接连接,是不可能了。
    想穿梭所有防火墙,代理软件,只能通过http协议。
    现在的WebService就是用http封装的。实现目标就可以了。为什么非强调什么直接连接,p2p?
      

  4.   

    是啊。两个机器是无法直接连接。
    如果没有防火墙和代理的影响,是没有问题的。
    但一般的代理和防火墙都会限制端口,只允许常规的服务打开,如http,ftp,telnet。
    所以,我个人觉得p2p意义不是很大。
    要是有服务器做中转,就好多了。不过这又不是p2p了。
      

  5.   

    用jxta可以做到,用http协议。你可以参考一下中国电力出版社的《Java P2P程序设计》
      

  6.   

    如果是两个不同局域网的用户,想建立连接用p2p恐怕不可能,除非一方有外网ip.即使是http协议也不好实现.可以使用通过服务器中转来实现.a机先发给b机,b机再发给c机.
      

  7.   

    做一个中间服务器,接受 a 、b 的信息,然后转发这样不算直接 p2p 应该也能勉强用 :)