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

解决方案 »

  1.   

    是啊,就是好友一登陆,程序就要获取对方的ip和端口啊,这样socket才能连上对方吧,是这个思路吧?
      

  2.   

    你得有一个服务器,存着所有登录用户的IP,客户端是一定要知道服务器的IP才能登陆,这个逃不掉的
      

  3.   

    回复lcf :这么说,人家腾讯qq他怎么就可以知道对方的ip和端口,要不他怎么可以连上所有的好友呢?
      

  4.   

    回复QianFeiYiTingJi:
    你说的对,我的需求就是要程序主动获取客户端的ip啊?
      

  5.   

    如果IP换了呢,根据用户的ID 判定的 QQ好友是在本地文件中存储以后获取的
      

  6.   

    哦,原来这样,我们每次登陆qq时,请求时,所连接的腾讯的服务器的ip和端口都是相同的吗?
      

  7.   

    回复 灰蛋一个:
    谢谢你,那我还有一个疑问,就是我们每次连接腾讯的服务器,腾讯服务器可以获取我们的ip和端口,但是,作为远程连接,我们的ip都是192.168...的内网啊,并没有提供对外的公网给腾讯,他理论上是不能访问我的机器的内网啊,腾讯是怎样做到啊?
      

  8.   

    当你连去腾讯的时候,你总要经过公网吧,你总得有个公网IP吧,这条连接就是临时的通道,你的路由器做了临时的映射,临时分配了一个端口,腾讯服务器发送的所有数据都会经过这个端口转发到你的机子上。如果别人企图用这个端口连接,那自然是不行的了,因为源IP不一样。如果别人想连接你,就要你自己通过UPnP协议让路由器临时分配一个端口用来接受传入连接,再转发给你。Java里有Cling和Weupnp,具体我也没研究过,大概原理是这样。如果你的路由没有开启或者不支持UPnP,那别人是没办法连接你的,你所收到的东西只能通过第三方(腾讯服务器)中转。因为腾讯服务器可以跟A和B交流,而A和B直接却不能交流,所以A把东西给服务器,服务器再给B
      

  9.   

    同问啊          http://bbs.csdn.net/topics/390567381     
      

  10.   

     每个内网都对应一个公网的  可以看看百度IP 就是你的外网IP了