我写了个Server端和Client端,当我用内网地址(192.168.1.*)连接Server端可以通信,当我把Server端放在服务器上时,并试图通过外网地址,即用真实的网络地址(211.67.243.*)连接服务器时,为何;连接不上去呢,
请问大家该怎么解决呢?谢谢了

解决方案 »

  1.   

    看你的server端绑定的是哪个地址吧,如果绑定的不是所有地址,那应该是连不上的。
      

  2.   


    具体错误时这样的,java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:168)
    at java.io.DataInputStream.read(DataInputStream.java:83)
    at com.love999.clienttest.connect.ConnectThread.run(ConnectThread.java:44)
    at java.lang.Thread.run(Thread.java:619)
    一台机器模拟350个客户端,一台机器连接服务器没有错误,三台机器同时连接服务器时就会出现上面的错误了
      

  3.   

    当然了,你的Server端抗不了那么多负载,你最好优化下Server端程序,比如考虑下线程池,或者直接用mina框架做
      

  4.   

    楼主的Server端貌似是单线程的,当第二个Client连接Server的时候,就可能Connection reset, 
    Socket Server一般都是多线程的,或者每accept()一个连接,就分配一个线程处理与Client的通信。
      

  5.   

    诺诺的问一下,你能ping通外网地址么?
    你的外网地址是NAT的?还是服务器配置上的?
    因素很多,不能一概而论。
      

  6.   

    1.ping一下Server端外网ip
    2.检测Server端 端口没被占用,并成功监听
    3.检测Server端 端口没有被防火墙或者杀毒软件禁用
    4.确定Server端 ip地址是独享的外网ip 不是经过路由器NAT过的
       
       个人经验 仅供参考 欢迎交流 QQ262863796