日期:2014-05-19  浏览次数:20709 次

JAVA P2P实现即时通信的思路
大家好,现在客户要求做一个网页版的即时通信功能,项目经理说要用P2P技术做,我了解了下,知道一端监视一个端口比如:
······
ServerSocket serverSocket = new ServerSocket(10000);
Socket s = serverSocket.accept();
······
然后会阻塞在这里一直等到有消息触发;
其他端:
······
Socket s = new Socket("127.0.0.1", 10000);
······
可以发送消息给本机 10000端口的应用程序,这样子再加上点代码就可以达到信息的发送和接受,
但是我有点不明白,也是希望大家帮我指明思路的:
  如果我要发送一些信息到一个网吧里面的一台机器上,或者是某个公司的机器上,这些机器相对于外网只是一个内网的ip没有公网的ip,这样子我即时知道他们的端口号不知道他们的公网ip是发送不了信息过去的,唯一能想到的是在他们的路由器上做一个端口映射,就能通过公网ip+外部端口映射到内部的ip到端口对应的应用程序上。
  但是不可能每个路由器上我都去人工的做一个端口映射吧,而且我不确定这两台要即时通信的机器是哪两台,不可能去人工在路由器上配置端口映射的,请问这怎么解决。
  如果您有很标准清晰的答案而且觉得在这里说很麻烦那么请留下您的QQ,在你闲下的时候来请教您,谢谢。

------解决方案--------------------
建议你在网上找找 apache mina这个比较好。 。是一个开源的已经实现了通讯。。
------解决方案--------------------
ls 正解 mina session.write(xxx); 关键的是你的协议是什么。。。web端用什么 http? 如果是http的话就要自己写协议解析decode encode