【问题标题】:Android check if remote server is onlineAndroid 检查远程服务器是否在线
【发布时间】:2012-07-24 01:29:17
【问题描述】:

我是 Android 编程新手,我一直面临原生 Java 中不存在的问题。当我在我的计算机上运行此代码时,它运行正常。但是,当我在我的设备中运行它时,我什么也没有得到,我什至尝试将消息发布到 UI 并且没有用于此的 logcat。我不确定出了什么问题。

                try{
                    Socket socket = new Socket(serverAddr, SERVER_PORT);
                    Log.i("TAG","Socket connected");    
                }catch(IOException e){
                    Log.i("TAG","Socket not connected");
                }

更新 1:我只是更改了代码..没有太多,并意识到在 2 分钟左右后它完成了它应该做的事情?是否与保持活动标志有关?或者无论如何我可以运行代码一两秒钟然后停止它。请理解,如果服务器死机,则套接字创建行下方的代码仅在 2 分钟后执行。下面是我的代码:

    try{
InetAddress serverAddr = InetAddress.getByName(serverIP);   
//Line below executes with no delay
postToUI("Trying to connect to standalone server" + "\n\n");
socket = new Socket(serverAddr, SERVER_PORT);
//Line below executes after 2 minutes
postToUI("Successfully connected to standalone server" + "\n\n");

}catch(ConnectException e){
    postToUI("Socket not connected");
}catch(IOException e){
    postToUI("Socket not connected");
}   

【问题讨论】:

  • 我不确定,但你可以试试这个:stackoverflow.com/questions/1443166/…
  • 它谈论的是活着的主机。在这种情况下,即使服务器应用程序没有监听,但是如果服务器主机还活着,那么它会很好。就我而言,我想知道我的服务器是否正在接受连接。
  • 似乎抛出了一些错误。尝试在日志中查找它或将IOException 替换为Throwable
  • 如果您在 LogCat 中没有收到任何日志消息,那么您没有执行上面显示的代码。
  • @CommonsWare 在 try 块执行之前的代码。

标签: java android sockets


【解决方案1】:

我很少做 Android 开发,所以不要咬我笑脸

主机无法与客户端通信的可能原因

  • 主机有防火墙,可能正在关闭连接(不太可能)
  • 主机可能意外关闭,例如电源故障(不太可能)
  • 主机可能未正确转发端口(可能)
  • 您的 Android 应用没有允许使用套接字的正确清单。
  • 您正在测试的安卓设备可能禁用了互联网,但可以轻松启用。
  • 如果是动态的,主机地址可能已经改变。

对于 logcat,我认为 logcat 只显示主线程的日志消息。但我不确定。

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2011-07-10
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多