问题描述:
测试时发现手机(电信3G网络)tcp客户端连接不上tcp服务器(校园网固定公网ip)了,一直连接超时,但是切换到wifi后可以连上。
有段时间之前测试过3G是可以连上的TT..
后续测试:
——————————————————————————————
测试环境1:硬件环境——网络
Client: 安卓手机——电信3G、联通3G、移动3G
Server: PC —— 校园网固定公网IP
TCP连接测试结果:
error1:客户端连接服务器时Socket建立超时fail。
或者
error2:
java.net.SocketTimeoutException:Transport endpoint is not connected
服务端提示:
11:39:35 MSG TCPsocket error 1, The remote host closed the connection
测试环境2:硬件环境——网络
Client: 安卓手机—— 分别接入校园网wifi
Server: PC —— 校园网固定公网IP
TCP连接测试结果:
success:客户端通过校园网wifi可成功连接上服务器。
测试环境3:硬件环境——网络
Client: 安卓手机—— 分别接入电信宽带wifi
Server: PC —— 校园网固定公网IP
TCP连接测试结果:
Day1-success:客户端通过电信wifi可成功连接上服务器;
Day2-failed:客户端通过电信wifi连接服务器失败
测试环境4:硬件环境——网络
Client: 安卓手机—— 分别接入电信3G、移动3G、联通3G
校园网wifi、电信宽带wifi
Server: PC —— 电信宽带动态IP(通过获取该ip后访问)
TCP连接测试结果:
success:多次测试客户端通过3G或wifi皆可成功连接上电信服务器。
小结:
服务器网络:校园网{电信3G/联通3G/移动3G 连接均不成功,使用校园网wifi成功}
服务器网络:电信宽带(连接成功){电信3G移动3G联通3G,wifi}
猜想:
校园网公网ip在入口处有限制
——tcp端口被封掉或者ip被过滤,只允许校园网+校内宽带ip(待测)能通过。
附:
Socket建立,测试代码:
code:
//连接服务器
try { //mSocketClient= new Socket(sIP, port);
mSocketClient = new Socket();
mSocketClient.connect(new InetSocketAddress(sIP,port), TIME_OUT);
Log. i(TAG, "socketcreated!");
manageConnectedSocket( mSocketClient,0);
} catch (UnknownHostExceptione1) {
Log. e(TAG, "error1-"+e1);
e1.printStackTrace();
} catch (IOExceptione1) {
Log. e(TAG, "error2-"+e1);
e1.printStackTrace();
}
androidtcp:
transportendpoint is not connected
error:
error2-java.net.SocketTimeoutException:Transport endpoint is not connected