【问题标题】:android socket connection, inputStream freezing on readline with socket.io or node websocket serverandroid socket 连接,inputStream 在 readline 上与 socket.io 或节点 websocket 服务器冻结
【发布时间】:2011-10-24 03:53:02
【问题描述】:

我使用 guavaweberknecht 将 inputStream 转换为字符串并连接到 websocket [参见 this 帖子]。 Weberknecht 把我赶出去了,所以我尝试了一个非常简单的 Socket-Connection 来从服务器获得任何答案。问题是,我无法读取 inputStream。我不知道为什么。

注意: 在 Iphone 上,Websocket-Server 工作。 [我知道“websocket /= socket”...我只是在这里尝试一切以从服务器获得任何答案]

我的代码:

        try {
            Socket sock = new Socket("62.212.88.234", 15000);
            OutputStream out = sock.getOutputStream();
            InputStream in = sock.getInputStream();

            Log.e("SKT", "Reading input [! PROBLEM HERE !]");
            String string = CharStreams.toString(new InputStreamReader(in,
                    "UTF-8"));

            Log.e("SKT", "Answer [! NEVER REACHED !]:" + string);
            sock.close();

        } catch (UnknownHostException e) {
            Log.e("SKT", "UnknownHostException: " + e.getMessage());
        } catch (IOException e) {
            Log.e("SKT", "IOException: " + e.getMessage());
        }

提前感谢您的帮助。

【问题讨论】:

    标签: android sockets websocket inputstream


    【解决方案1】:

    documentationCharStreams.toString 表示:

    将可读对象中的所有字符读入字符串。

    我的猜测是远程端没有关闭套接字,所以没有流的结尾可以消耗,因此冻结。

    【讨论】:

    • 也有同样的想法。但是怎么关闭呢? Iphone 不能毫无问题地连接到同一个插座。只有安卓不行。我认为这可能是一个端口问题。
    • 我认为你错过了我所说的。尝试最简单的套接字示例 - 只需从输入流中读取 - 您将看到数据。
    • 如何在关闭前即时阅读? BufferedReader 需要行尾。你的意思是逐字节?
    • 尝试使用InputStream.read(byte[] b)读入字节数组,而不是逐字节,更像是逐块。
    • 好的,谢谢。尝试了 phonegap websocket 方法,并在代码中看到他们也在逐块读取。现在可以了。谢谢。
    猜你喜欢
    • 2022-01-07
    • 2015-05-20
    • 2021-08-24
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2020-04-28
    • 2019-01-14
    • 2021-08-12
    相关资源
    最近更新 更多