通常内网通过NAT连接到外网,外网的机器无法连接进来,必须有一台在外网,而且最好服务器在外网。

解决方案 »

  1.   

    把服务器挂在公网上,客户端所在的网络比较复杂,必须保证他能穿过各种NAT,包括代理服务、防火墙等来与服务器连接,对于客户端之间的通讯就要借助服务器,可以先打洞,如果打洞不能互联,那就通过服务器中转。
      

  2.   

    如果你的服务器在公网上有公网地址,socket是TCP的话,通信就没问题;
    UDP需要NAT穿越
      

  3.   

    两个局域网通信,需要一个外网服务器,通过NAT穿透。
    如果一个在公网,一个在局域网,那就把局域网的外部路由服务器设置一个开放端口。外网就跟这个公网端口通信,内网也是向这个端口发射。有路由配置端口映射。
      

  4.   

    1.外网服务器转发:再写个程序当作转发服务器,放在外网,你设计的斗地主服务器和客户端都连接到这个转发服务器,都向这个转发服务器通信,就可以达到斗地主服务器与客户端间接通信;2.路由器端口映射:你哥们的客户端连接你学校外网IP和一个端口号,在把这个端口映射到你本机,那么通过你学校外网IP和这个端口的消息都转发给你的机器。这个不知道行不行,也没有实验过,当初我也有楼主的想法,困惑了我很长时间,也没有好的解决方案,学校网络环境复杂,我也不太懂网络,学校也不允许随便动,也没有实现。
      

  5.   

    说花生壳的,有没有了解过花生壳的用途?
    花生壳的最大用处是每次登录花生壳客户端时,服务器会自动把你当前的IP和域名绑定,所以别人只要使用域名就可以得到你的IP,而不管你IP怎么变,只要每次变后登录花生壳更新一下你的IP即可。
    楼主的情况与这个完全不一样,楼主的服务器与客户端都是内网,相信用学校的网,楼主机器与他哥们机器的IP都是不变的,根本用不着花生壳,而且就算楼主机器IP要变,变的也是内网IP,楼主学校外网IP不会变,楼主哥们连接的还是楼主学校外网IP。内网情况下端口映射才是解决之道。
      

  6.   

    再想种变通的方案:
    申请个空间,建个网站或FTP(这个网站或FTP当然是所有网络都可以访问,包括内网),你的服务器和客户端访问这个网站或FTP,要么通过网站你的服务器与客户端间接通信,要么直接访问FTP,把服务器与客户端要通信的内容写成文件放在FTP上,一个上传,一个下载。
    谨提供方案,速度这些可行不可行不考虑。
    不过话说回来,都建网站了,何不再此基础上做游戏,利用AJAX什么。
    再说两句,当初我也有楼主的想法,但一直没实现,希望借楼主的帖到找到好的解决方案。
      

  7.   

    这个就是我说的,被BeanJoy表述的很明白,第二个方法我测试过,完全ok。
      

  8.   

    请问楼主现在实现了吗?我现在类似的想通过socket实现两台手机之间的通信,实验室手机和家庭手机通信,家庭手机通过路由器上网,路由器公网IP是117.125.1.243,我现在在路由器的虚拟服务器做设置:服务端口5000内部端口4000 手机IP地址192.168.1.104,我在实验室手机的代码里做socket请求的时候是这样写吗?clientsocket = new Socket(117.125.1.243, 5000);然后在服务端要监听的端口号是4000吗?,是这样做吗。为什么实现不了呢
      

  9.   

    这个帖子还有更新吗,楼主后续做的怎么样了。成功建立连接了没啊。坐等呢...要是有进展希望可以探讨一下,小弟邮箱《[email protected]