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

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

谢谢了

------解决方案--------------------
贴异常代码出来啊?
不能连接服务器的异常多了,我知道是那个。
------解决方案--------------------
可能是丢包太严重,所以连不上去
------解决方案--------------------
看你的server端绑定的是哪个地址吧,如果绑定的不是所有地址,那应该是连不上的。
------解决方案--------------------
当然了,你的Server端抗不了那么多负载,你最好优化下Server端程序,比如考虑下线程池,或者直接用mina框架做
------解决方案--------------------
我说一句:检测端口。。
------解决方案--------------------
我建议你检查一下作为服务器的机子开的那个端口号有没有被其他程序占用。
------解决方案--------------------
探讨
引用:贴异常代码出来啊? 不能连接服务器的异常多了,我知道是那个。

具体错误时这样的,

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个客户端,一台机器连接服务器没有错误,三台机器同时连接服务器时就会出现上面的错误了

------解决方案--------------------
看端口是否映射到外网
------解决方案--------------------
中间有没有什么拦截的东西?
或者链接有错?这种东西很容易被忽略,很烦人
------解决方案--------------------
探讨
java.net.SocketException: Connection reset

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