首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据写入OutputStream而不使用CLDC关闭

将数据写入OutputStream而不使用CLDC关闭
EN

Stack Overflow用户
提问于 2019-10-01 03:28:21
回答 1查看 54关注 0票数 0

我有一个小的J2ME应用程序,应该发送一些字节到套接字和读取响应。但是,当我关闭OutputStrean时,套接字也会关闭,并且我无法读取响应。我想我可以尝试OutputStream.flush();,但它什么也不起作用。下面是应该从OutputStream读取数据的readAll()方法:

代码语言:javascript
复制
public final static String readAll(InputStream d) throws IOException {
        ByteArrayOutputStream res = new ByteArrayOutputStream();
        byte[] bytes = new byte[1024];
        int length;
        while ((length = d.read(bytes)) != -1){
            res.write(bytes, 0, length);
        }
        return new String(res.toByteArray(), "UTF-8");
    }
EN

回答 1

Stack Overflow用户

发布于 2020-05-02 02:12:24

您通常会希望有一个在后台运行的线程来实际处理数据的发送和接收。

接收到的数据应该提供某种方法来确定该特定数据块何时终止。例如,服务器可能会发回:

(long)length+(byte[])data

因此,从流中读取8个字节+不管长度是多少,然后您将使用这些数据构造一个表示该消息的对象,而您的另一个线程将读取该数据以决定它想要发送什么数据。

为了将数据发送出去,您可以有效地进行相反的操作,使用一个单独的线程使用表示要发送的消息的对象。

这些被称为消息队列,您可以在这里阅读更多信息:https://en.wikipedia.org/wiki/Message_queue

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58174132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档