0

我已经尝试了几种我在互联网上找到的关于如何通过套接字发送多个图像的解决方案,但我无法让它按我想要的方式工作。我有以下设置:

客户:

  1. 一个线程拍摄我的屏幕快照并将它们放入队列
  2. 多个线程从队列中读取并通过套接字将图像发送到服务器

服务器:

  1. 允许多个连接并接收图像并将它们放入队列的套接字服务器
  2. 读取队列并将图像写入 JPanel 的线程

我的问题是我很难通过套接字发送图像,例如。保持打开的套接字并仅流式传输图像。我尝试了不同的解决方案,但只发送了第一张图片。如果有人可以分享一些关于如何将多个图像从一个线程写入另一个线程的代码,我将不胜感激。

编辑

感觉每张图片都没有刷新?我现在创建 1 个线程以使用打开的连接发送:

while(true)
{
  BufferedImage imageQItem = (BufferedImage) queue.dequeue();
  ImageIO.write(imageQItem,"jpg",out);//out is a dataoutputstream
}

然后我读进去(我的套接字服务器为上述客户端的连接创建了一个新线程)

while(true)
{
  System.out.println("Reading");
  BufferedImage image = ImageIO.read(in);
  viewer.setBufferedImage(image);
  viewer.repaint();
}

所发生的只是它一直在打印阅读。我似乎没有结束每张图片。

4

2 回答 2

1

以 .jpg 格式发送(和接收)每个图像byte[],最好使用压缩图像的文件格式,例如 .jpg。不要忘记flush()图像之间的流。并确保在尝试读取下一个图像之前读取图像的所有字节。

于 2013-01-25T20:46:23.163 回答
0

通过网络发送图像非常困难。原因是文件太大了,如果不先压缩它们,几乎不可能发送它们。试试这个链接,它可能会对你有所帮助,因为没有你的代码我无能为力。如何在java中通过套接字发送图像数据类型希望对您有所帮助!

于 2013-01-25T20:31:49.403 回答