【发布时间】:2012-01-31 13:51:09
【问题描述】:
我编写了一个应用程序来远程启动我的服务器。启用 WiFi 后,该应用程序在模拟器和我的智能手机(HTC 渴望,Android 2.2)上都可以正常运行。 但是在禁用 WiFi 时它不起作用。
在重新启动之前,我首先检查它是否已经在运行。为此,我使用套接字并首先连接到一个 dyndns 地址。之后我尝试连接到我的 ip-box,在那里我可以通过套接字发送命令来打开我的计算机。
当与该套接字的连接失败时,我知道服务器没有运行。
相关代码为:
socket = new Socket();
socket.connect(new InetSocketAddress(serverName, port), 10000);
status = socket.isConnected() == true;
socket.close();
如果有异常(SocketException)我知道服务器没有运行。 当我打开 WiFi 时,这种方法非常有效。但是,如果 WiFi 没有打开,则连接总是说没问题,即使由于服务器不可用而无法建立连接。
有没有办法检查连接是否真的建立了,即使 WiFi 被禁用了?
欢迎提出任何建议!
谢谢,
鲁迪
【问题讨论】:
-
你怎么知道连接真的失败了?即使 WiFi 被禁用,仍然可以通过蜂窝数据网络进行连接。请参阅此内容以确保已禁用蜂窝数据网络:newbiehelper.blogspot.com/2011/07/…
-
由于我尝试启动的服务器没有运行,因此无法建立连接。当我在启用 wifi 的情况下运行程序时,对 socket.connect() 的调用因异常而失败。我应该补充一点,我刚刚在 stackoverflow 上发现了一个非常相似的问题,不幸的是没有得到答复。基本上另一个问题是指3G模式下的问题,所以显然我不是一个人遇到这个问题。
-
好的,所以它在打开Wifi的情况下工作,在关闭Wifi的情况下不起作用,这在模拟器和真机上都会发生?
-
这只发生在真手机上,在模拟器上我无法关闭 Wifi - 刚刚尝试过,因为我以前从未在模拟器中将其关闭。实际上,我一直认为套接字在 3G 模式和 Wifi 模式下运行时应该表现相同 - 有点天真;-)
-
您的问题似乎与以下线程中的问题相似。也许您的手机网络连接上有一些端口过滤?尝试端口 80 建议。 stackoverflow.com/questions/5749612/…