我在android上做了一些套接字编程(注意我说套接字,而不是HttpClient或HttpUrlConnection)我遇到了一个非常奇怪的问题,我无法在端口443上连接到我的tomcat服务器但是8443很好。我的代码很简单,这就是它的全部内容:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
Socket s = new Socket();
InetSocketAddress addr = new InetSocketAddress("10.1.1.1", 443);
s.setKeepAlive(true);
s.setSoTimeout(300000);
s.connect(addr);
}catch{<my catch statement>}
}
这就是全部。我将程序推送到我的设备并启动它但它总是引发SocketException: Operation Timed Out
错误。但是,如果我将服务器端和代码端的端口切换到8443,我的设备可以连接没问题。我只是在更改server.xml文件中的数字。
有趣的事情,如果我在计算机上的模拟器中运行相同的东西,它的工作正常。我还在设备和我的计算机之间的连接上运行wireshark,看起来它一直在丢回ICMP Destination Unreachable: Destination Port Unreachable
。当我可以从我的设备ping它时怎么样?
我看看这是否更适合在服务器故障上,但从那里的常见问题解答,它似乎更专注于专业而非个人服务器问题。有没有人知道为什么Android设备无法连接到我的服务器上的某些端口,当我的模拟器可以?为什么切换到8443突然允许连接工作?
答案 0 :(得分:1)
您的Android设备与服务器之间是否存在防火墙(桌面(模拟器)与服务器之间不存在?)