日期:2014-05-20  浏览次数:20751 次

java如何编写远程聊天工具
各位java大神,我想通过java sock来实现一个远程的网络聊天工具,不仅是局域网,就是不知道如何获取对方的ip和端口啊,请问谁有这方面的经验,感激不尽了!
java?

------解决方案--------------------
服务器可以不同 但是获取的数据必须是同一地的
------解决方案--------------------
当你连去腾讯的时候,你总要经过公网吧,你总得有个公网IP吧,这条连接就是临时的通道,你的路由器做了临时的映射,临时分配了一个端口,腾讯服务器发送的所有数据都会经过这个端口转发到你的机子上。

如果别人企图用这个端口连接,那自然是不行的了,因为源IP不一样。

如果别人想连接你,就要你自己通过UPnP协议让路由器临时分配一个端口用来接受传入连接,再转发给你。Java里有Cling和Weupnp,具体我也没研究过,大概原理是这样。如果你的路由没有开启或者不支持UPnP,那别人是没办法连接你的,你所收到的东西只能通过第三方(腾讯服务器)中转。因为腾讯服务器可以跟A和B交流,而A和B直接却不能交流,所以A把东西给服务器,服务器再给B