2011-09-28 72 views
0

我在android上做了一些socket编程(注意我说的是套接字,而不是HttpClient或HttpUrlConnection),我遇到了一个很奇怪的问题,我无法连接到端口443上的tomcat服务器,但是8443很好。我的代码非常简单,这就是它的全部内容:套接字连接到8443好,但不是443?

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它时,这怎么可能?

我期待看看这是更适合serverfault,但从那里的常见问题解答,它似乎更专注于专业而不是个人服务器问题。有没有人有任何想法为什么Android设备无法连接到我的服务器上的某些端口时,我的模拟器可以?为什么切换到8443突然允许连接工作?

回答

1

在您的Android设备和您的服务器之间是否存在不存在于桌面(模拟器)和服务器之间的防火墙?

+0

确实有! :) – Otra