如何在不关闭套接字的情况下通知客户端数据已完成

奥古斯托·佩鲁切洛(Augusto Perucello)

我在编写将位图作为数据传递的服务器-客户端通信时遇到麻烦。

在我的服务器端

InputStream in = rs.getBinaryStream(1);
                        ByteArrayOutputStream f2 = new ByteArrayOutputStream();
                        int c = 0;
                        while ((c = in.read()) > -1) {
                            f2.write(c);
                        }
                        bytes = f2.toByteArray();
                        username2.write(bytes, 0, bytes.length);

在我的Android客户端上,

 ByteArrayOutputStream out = new ByteArrayOutputStream();
            final byte[] buffer = new byte[2048];
            int read = -1;

            while ((read = receiveimagem.read(buffer)) != -1) {
                out.write(buffer, 0, read);
            }

问题是,当我在服务器端关闭outputStream时,客户端仅了解发送已结束。但是该结构在一个循环内,如果我关闭套接字,它将无法再次使用。我如何告诉客户数据已经结束?该代码同时停留在Android客户端中。我知道我应该发送长度并检查它,但是我不知道如何使用长度来检查文件的末尾。

丹尼尔·奥(Daniel O)

将图像的长度传递给客户端时,您的主要问题是服务器本身在开始传输图像之前不知道输入的长度。服务器应首先将整个图像读入缓冲区,然后将缓冲区的长度发送给客户端。然后,客户端可以在for循环条件下使用接收到的大小执行for循环。更好的解决方案是让客户端在一次调用中读取所有图像,因此您无需在客户端中循环。通常可以并且应该避免一次执行一个字节的I / O。还记得刷新两个输出流!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C套接字可以在不关闭客户端连接的情况下接收0个字节吗?

来自分类Dev

如何在不关闭套接字IO操作的情况下中断线程

来自分类Dev

如何在不关闭套接字的情况下将FIN标志发送到主机

来自分类Dev

如何在nodejs中推送/通知客户端新数据?

来自分类Dev

异步客户端套接字c#。如何在不阻止程序运行的情况下循环等待来自服务器的信息?

来自分类Dev

在没有客户端请求的情况下在客户端套接字上发送数据

来自分类Dev

在没有客户端请求的情况下在客户端套接字上发送数据

来自分类Dev

如何在不关闭终端的情况下退出SimpleHTTPServer?

来自分类Dev

如何在不关闭xterm的情况下捕获SIGINT?

来自分类Dev

如何在不关闭SAS的情况下停止它?

来自分类Dev

如何在C / C ++中关闭特定客户端的套接字?

来自分类Dev

在不关闭本机处理程序的情况下销毁Boost Asio套接字

来自分类Dev

如何在不安装Oracle客户端和cx_Oracle的情况下访问Oracle数据库?

来自分类Dev

如何在没有风险的情况下将ip(客户端)存储在数据库中

来自分类Dev

如何在未安装任何客户端的情况下从Robot Framework连接Oracle数据库

来自分类Dev

如何使用json数据从客户端发出套接字?

来自分类Dev

Linux:TCP 套接字侦听:如何检测无法关闭套接字的客户端?

来自分类Dev

客户端关闭连接时服务器套接字完成

来自分类Dev

如何在不更改后绑定的情况下从WCF服务引用WCF客户端?

来自分类Dev

如何在不安装Sensu服务器的情况下安装Sensu客户端?

来自分类Dev

如何在没有Play的情况下从Play框架使用REST客户端

来自分类Dev

如何在没有REST客户端的情况下演示REST API

来自分类Dev

如何在不向客户端展示算法的情况下加密用于API访问的密码?

来自分类Dev

如何在不使用客户端API的情况下从Grakn导出边缘列表

来自分类Dev

如何在启用keepalive选项的情况下检测死客户端

来自分类Dev

如何在没有REST客户端的情况下演示REST API

来自分类Dev

如何在没有任何JQuery Lib的情况下知道实际的客户端高度?

来自分类Dev

OAuth2 - 如何在没有客户端密码的情况下授权?

来自分类Dev

如何在不使用 Stripe 的 UI 层的情况下获取客户端令牌?

Related 相关文章

  1. 1

    C套接字可以在不关闭客户端连接的情况下接收0个字节吗?

  2. 2

    如何在不关闭套接字IO操作的情况下中断线程

  3. 3

    如何在不关闭套接字的情况下将FIN标志发送到主机

  4. 4

    如何在nodejs中推送/通知客户端新数据?

  5. 5

    异步客户端套接字c#。如何在不阻止程序运行的情况下循环等待来自服务器的信息?

  6. 6

    在没有客户端请求的情况下在客户端套接字上发送数据

  7. 7

    在没有客户端请求的情况下在客户端套接字上发送数据

  8. 8

    如何在不关闭终端的情况下退出SimpleHTTPServer?

  9. 9

    如何在不关闭xterm的情况下捕获SIGINT?

  10. 10

    如何在不关闭SAS的情况下停止它?

  11. 11

    如何在C / C ++中关闭特定客户端的套接字?

  12. 12

    在不关闭本机处理程序的情况下销毁Boost Asio套接字

  13. 13

    如何在不安装Oracle客户端和cx_Oracle的情况下访问Oracle数据库?

  14. 14

    如何在没有风险的情况下将ip(客户端)存储在数据库中

  15. 15

    如何在未安装任何客户端的情况下从Robot Framework连接Oracle数据库

  16. 16

    如何使用json数据从客户端发出套接字?

  17. 17

    Linux:TCP 套接字侦听:如何检测无法关闭套接字的客户端?

  18. 18

    客户端关闭连接时服务器套接字完成

  19. 19

    如何在不更改后绑定的情况下从WCF服务引用WCF客户端?

  20. 20

    如何在不安装Sensu服务器的情况下安装Sensu客户端?

  21. 21

    如何在没有Play的情况下从Play框架使用REST客户端

  22. 22

    如何在没有REST客户端的情况下演示REST API

  23. 23

    如何在不向客户端展示算法的情况下加密用于API访问的密码?

  24. 24

    如何在不使用客户端API的情况下从Grakn导出边缘列表

  25. 25

    如何在启用keepalive选项的情况下检测死客户端

  26. 26

    如何在没有REST客户端的情况下演示REST API

  27. 27

    如何在没有任何JQuery Lib的情况下知道实际的客户端高度?

  28. 28

    OAuth2 - 如何在没有客户端密码的情况下授权?

  29. 29

    如何在不使用 Stripe 的 UI 层的情况下获取客户端令牌?

热门标签

归档