java如何编写远程聊天工具

何愁山高水深 2013-08-26 10:03:07
各位java大神,我想通过java sock来实现一个远程的网络聊天工具,不仅是局域网,就是不知道如何获取对方的ip和端口啊,请问谁有这方面的经验,感激不尽了!
...全文
386 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
灰蛋一个 2013-08-27
  • 打赏
  • 举报
回复
每个内网都对应一个公网的 可以看看百度IP 就是你的外网IP了
Scaling_Up 2013-08-27
  • 打赏
  • 举报
回复
同问啊 http://bbs.csdn.net/topics/390567381
lcf 2013-08-27
  • 打赏
  • 举报
回复
当你连去腾讯的时候,你总要经过公网吧,你总得有个公网IP吧,这条连接就是临时的通道,你的路由器做了临时的映射,临时分配了一个端口,腾讯服务器发送的所有数据都会经过这个端口转发到你的机子上。 如果别人企图用这个端口连接,那自然是不行的了,因为源IP不一样。 如果别人想连接你,就要你自己通过UPnP协议让路由器临时分配一个端口用来接受传入连接,再转发给你。Java里有Cling和Weupnp,具体我也没研究过,大概原理是这样。如果你的路由没有开启或者不支持UPnP,那别人是没办法连接你的,你所收到的东西只能通过第三方(腾讯服务器)中转。因为腾讯服务器可以跟A和B交流,而A和B直接却不能交流,所以A把东西给服务器,服务器再给B
何愁山高水深 2013-08-27
  • 打赏
  • 举报
回复
回复 灰蛋一个: 谢谢你,那我还有一个疑问,就是我们每次连接腾讯的服务器,腾讯服务器可以获取我们的ip和端口,但是,作为远程连接,我们的ip都是192.168...的内网啊,并没有提供对外的公网给腾讯,他理论上是不能访问我的机器的内网啊,腾讯是怎样做到啊?
灰蛋一个 2013-08-27
  • 打赏
  • 举报
回复
服务器可以不同 但是获取的数据必须是同一地的
何愁山高水深 2013-08-27
  • 打赏
  • 举报
回复
哦,原来这样,我们每次登陆qq时,请求时,所连接的腾讯的服务器的ip和端口都是相同的吗?
灰蛋一个 2013-08-27
  • 打赏
  • 举报
回复
如果IP换了呢,根据用户的ID 判定的 QQ好友是在本地文件中存储以后获取的
何愁山高水深 2013-08-27
  • 打赏
  • 举报
回复
回复QianFeiYiTingJi: 你说的对,我的需求就是要程序主动获取客户端的ip啊?
QianFeiYiTingJi 2013-08-27
  • 打赏
  • 举报
回复
那是客户端主动连接的,服务器一定会知道的
何愁山高水深 2013-08-26
  • 打赏
  • 举报
回复
回复lcf :这么说,人家腾讯qq他怎么就可以知道对方的ip和端口,要不他怎么可以连上所有的好友呢?
lcf 2013-08-26
  • 打赏
  • 举报
回复
你得有一个服务器,存着所有登录用户的IP,客户端是一定要知道服务器的IP才能登陆,这个逃不掉的
何愁山高水深 2013-08-26
  • 打赏
  • 举报
回复
是啊,就是好友一登陆,程序就要获取对方的ip和端口啊,这样socket才能连上对方吧,是这个思路吧?
末日哥 2013-08-26
  • 打赏
  • 举报
回复
需要知道别人的IP吗

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧