【问题标题】:application dying at port creation应用程序在端口创建时死机
【发布时间】:2011-06-28 15:42:31
【问题描述】:

尝试在以下代码中打开连接时,我的应用程序崩溃了。我相信这是因为正在使用该端口,但我不确定。如果您发现下面的代码有任何问题或知道问题可能是什么,请告诉我。该应用程序使其成为

Log.v("连接设备", "之后 ipad");

有时它会超过那个点。但很少。此外,没有捕获到异常。

提前致谢!

    try {
        Log.v("connectdevice", "inside make connection");
        InetAddress host = InetAddress.getByName("192.168.201.65");
        Log.v("connectdevice", "after ipadress");
        socket = new Socket(host.getHostName(), 7777);
        Log.v("connectdevice", "after socket");
        connected = true;
        } catch (UnknownHostException e) {
            connected = false;
            e.printStackTrace();
        } catch (IOException e) {
            connected = false;
            e.printStackTrace();
        }

【问题讨论】:

  • 也不例外?甚至不在logcat中?那么是什么让你的程序崩溃呢?
  • 除了 Log.v 的输出之外,logcat 不显示任何内容。有任何想法吗?我是否处理了所有可能的异常?
  • 这很奇怪。我只看到 new Socket(host.getHostName(), 7777) 有点次优,因为这可能(?)包括反向 DNS 查找。套接字将接受 InetAddress。只需使用 Socket(host, 7777)。
  • 现在试试。会告诉你结果
  • 现在工作就像一个魅力。这很奇怪。谢谢,如果您将此修复作为答案发布,我会给您一些代表并接受答案。感谢您的帮助。

标签: java android sockets port


【解决方案1】:

[由 ssfn 发布]
这很奇怪。我只看到那个新的 Socket(host.getHostName(), 7777) 是一个 有点次优,因为这可能(?) 包括反向 DNS 查找。插座 将接受 InetAddress。只需使用 套接字(主机,7777)。

如果 ssfn 过来并把他的答案放在这里,我会尽快接受。在那之前,这是公认的答案。

【讨论】:

    【解决方案2】:

    使用

    Log.e("Error", "exception", e);
    

    这样你就可以在 Logcat 上看到异常了

    【讨论】:

    • 我的“捕获”不应该已经将捕获到的异常打印到 logcat。那么,您的建议究竟对我有什么作用?
    • 未捕获的异常应该显示在 logcat 中。除此之外,e.printStackTrace() 将打印到 stdout/stderr,它也应该被重定向到 logcat。
    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2019-10-01
    • 2020-12-23
    • 2018-05-17
    • 2011-02-07
    相关资源
    最近更新 更多