Socket通信时报错java.net.ConnectException: Connection refused

在调试Socket通讯时,利用花生壳进行域名解析,将固定的域名指定到具体的电脑主机上(电脑主机的IP地址可变)
当手机客户端使用模拟器模拟时,可以正常进行Socket通信。
当手机客户端为真机测试时且与主机处于同一WIFI连接下,如电脑开启随时WIFI,将手机客户端连入该WIFI。此时,电脑运行Java编写的Server端,同时在接入WIFI的手机客户端进行Socket连接时会报以下错误: (在服务端未开启时也会报Connect refused错误)
可参看: http://blog.csdn.net/weiruoao/article/details/26499145

06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err: java.net.ConnectException: Connection refused
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.PlainSocketImpl.socketConnect(Native Method)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:194)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.Socket.connect(Socket.java:586)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.Socket.connect(Socket.java:535)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.Socket.(Socket.java:427)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.net.Socket.(Socket.java:210)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at com.sannas.sockettest.SocketUtil$1.run(SocketUtil.java:35)
06-02 10:52:31.300 11185-11469/com.sannas.sockettest W/System.err:     at java.lang.Thread.run(Thread.java:762)

at com.sannas.sockettest.SocketUtil$1.run(SocketUtil.java:35)指向的是代码中:mSocket = new Socket("sannas.imwork.net",20005);  
在网上查找原因一般都是指域名或端口号出现错误或端口未开启等问题,但经检查后,这些都是正确的。后经调试发现,手机不能与已进行域名转换(花生壳域名映射)之后的电脑主机连入同一WIFI(即用电脑开一个共享WIFI,手机再接入此WIFI),运行客户端的真机需要更改网络连接后(不接入电脑开启的WIFI)即可进行正常的Socket通信。具体原因不太清楚,还请大佬些告知。
更改网络后测试效果:
Socket通信时报错java.net.ConnectException: Connection refused_第1张图片

你可能感兴趣的:(Android开发)