一个服务器,   多个客户端,
    我的想法是,在客户端与客户端视频或传文件时不通过服务器中转,该怎么搞,
      如果要客户端与客户端连接的话,内网的话就有问题了。
         问题就是  两个客户端怎么相互建立连接,假如我两个客户端在两个不同的网吧,怎么去建立连接,像普通的ServerSocket监听的话,另一端知道IP和端口也连不上。

解决方案 »

  1.   

    此群是一个 java Flex 技术群,如有想在知识方面想共同进步的请加入,长期不发言者 将会被清楚群号:90551956希望大家都能带着知识和问题进来
      

  2.   

    我想可以通过服务器发送相应的命令从而使两个客户端进行socket的连接吧比如,客户端A想向客户端B传文件的话,客户端A可以建立一个ServerSocket开始监听。然后将A的IP和监听的端口通过服务器发送给客户端B.服务器在转发的过程中需对IP和端口信息进行一些处理,例如附加一些控制信息。B收到之后,先解析控制信息。B解析出该控制信息是要求与客户端A进行Socket连接,于是就将A的IP和端口号作为参数请求连接。因为此时A一直处于监听状态,当然能够及时的响应B的请求。
      

  3.   

    这时候就相当于AB中都存在两路连接,A<——>服务器<——>B 和A<——>B,当然两路连接的端口号不能有冲突
      

  4.   

    A <——>B  的连接是通过服务器建立的,但建立之后服务器便不再能与,不知道这样符不符合LZ的要求……
      

  5.   

    又见P2P.....    
    楼主也可以自己实现一个协议.
    服务器的作用只是提供链接目标信息即可.简单的P2P实现起来并不困难,无外乎是那种广播,多播技术而已.然后就是考虑使用的协议. TCP,UDP. 具体选哪个看楼主对数据的要求.  剩下的就需要楼主考虑信息响应的问题了,是用队列还是多线程.那就仁者见仁智者见智啦.  再有就是防火墙. 内网. 端口映射等等扩展的问题了. 这个就要一点一点弄啦.个人感觉服务器信息采集分发没必要用java吧, 找个C的程序员写个简单的高速采集派发服务端就足够了哦.
    有本书教 <<java p2p技术内幕>>的吧.  推荐楼主看看.