【问题标题】:Android Sockets - Client side IOExceptionAndroid Sockets - 客户端 IOException
【发布时间】:2011-07-07 18:48:57
【问题描述】:

我正在尝试连接到我计算机上的一个简单 Java 服务器(将来是一个真正的服务器,但我只是在学习如何首先使用套接字编程。当我尝试连接时,手机上的应用程序会抛出异常一个 IOException。但是,在模拟器上,它不会。

我确实有:

包含在清单中。这是我打开时执行的代码块:

try {
  responseField.setText("Opening socket...");
  Socket socket = new Socket(getIP(),Integer.parseInt(getPort()));
  responseField.setText("Socket opened. Initializing out...");
  out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
  responseField.setText("Done. Initializing in...");
  in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  responseField.setText("Done.");
} catch (NumberFormatException e1) {
  responseField.setText("NumberFormatException");
} catch (UnknownHostException e1) {
  responseField.setText("UnknownHostException");
} catch (IOException e1) {
  responseField.setText("IOException");
}

【问题讨论】:

  • getIP() 和 getPort() 返回什么?
  • 你确定你有 wifi/3G 运行吗?
  • 哪里失败了,错误说明了什么?
  • 尝试创建套接字时失败。 “Opening socket...”是最后打印的内容。问题似乎在于 EVO 的 Wi-Fi 信号较弱。一两个酒吧显然不足以上网,因此可以预期这是问题的根源。

标签: java android sockets


【解决方案1】:

您是否确保服务器端使用 ServerSocket 并使用 ServerSocker.accept() 方法?

【讨论】:

  • 可以,模拟器完美连接、发送和接收
  • 看来是 Wi-Fi 信号较弱导致错误。之后我尝试上网(谷歌、CNN 等),但我不能。所以我现在只需要在模拟器上测试,或者在更强的信号下测试。谢谢。
  • 我还会向用户推荐非常好的错误处理/通知,以便您的应用程序的购买者知道它失败的原因 - 明确。
  • 感谢 Kevin,当然会开发一个更受欢迎的应用程序,但现在我知道为什么了。
【解决方案2】:

因此,Wi-Fi 信号较弱似乎导致错误。之后我尝试上网(谷歌、CNN 等),但我不能。所以我现在只需要在模拟器上进行测试,或者在更强的信号下进行测试。谢谢

【讨论】:

    【解决方案3】:

    如果您之前(我假设)能够连接到网络,但之后不能,那么这不是 wifi 强度的问题。此外,根据您冲浪的地点,wifi 路由器可能已配置为不允许此类连接。尝试使用同一网络中的另一台计算机 ping 您的服务器 IP,并查看是否可以 ping。由于服务器在 localhost 上运行,因此模拟器将正常工作。

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多