通过套接字从服务器到客户端的映像

时间:2013-01-25 17:56:45

标签: java image sockets

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

客户端:

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

    1. 允许多个连接并接收图像并将其放入队列的套接字服务器
    2. 读取队列并将图像写入JPanel的线程
    3. 我的问题是我很难通过套接字发送图像,例如。保持一个开放的套接字,只是流式传输图像。我尝试了不同的解决方案,但只发送了第一批图像。如果有人可以分享一些关于如何将多个图像从一个线程写入另一个线程的代码,我将非常感激。

      修改

      感觉每个图像都没有刷新?我现在创建一个要通过开放连接发送的线程:

      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();
      }
      

      所有这一切都是它保持打印阅读。我似乎没有结束每张图片。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

通过网络发送图像非常困难。原因是文件太大,几乎不可能在不先压缩它们的情况下发送它们。尝试这个链接它可能能够帮助你,因为我无法帮助你解决代码问题。 How to send Image data type via socket in java希望它有用!