【问题标题】:Java Image Server: socket write errorJava 图像服务器:套接字写入错误
【发布时间】:2012-07-15 16:19:11
【问题描述】:

几天前,我考虑编写自己的图像客户端以通过 HTTP 直接传输图像。我用谷歌搜索并研究了很长时间并编写了我的服务器:

public class SConnection extends Thread {

    Socket client;

    /* ... */

    @Override
    public void run() {

        while(true) {
            try {

                //Get some image paths
                File folder = new File(new java.net.URI("file:///C:/images/"));
                File[] images = folder.listFiles();
                //Load the image
                BufferedImage bi = ImageIO.read(images[0]);
                //Write the image
                ImageIO.write(bi, "JPEG", client.getOutputStream());

            } catch (Exception ex) {

                ex.printStackTrace();
                return;

            }

        }

    }

主类是一个等待接受许多连接的线程,将它们存储在一个 ArrayList 中,创建 SConnection 实例并启动它们。

客户端如下所示:

URL target = new URL("http://127.0.0.1:82"); //The server - so far, so good
URLConnection conn = target.openConnection();
BufferedImage in = ImageIO.read(conn.getInputStream()); //And as I try to receive the image: boom, exception
File save = new File(new java.net.URI("file:///C:/images/result.jpeg"));
ImageIO.write(in, "JPEG", save);

服务器和客户端都发送位于 ImageIO.write / ImageIO.read - 行的异常。

服务器说:

java.net.SocketException: Connection reset by peer: socket write error

客户说:

java.io.IOException: Invalid Http response

我知道,图像没有正确传输,但我应该改变什么?有什么线索吗?

提前谢谢你们!

【问题讨论】:

  • 我不确定这是否会有所帮助,但您可能应该从 URLConnection 关闭 InputStream。我的猜测是 ImageIO.read() 不会为你这样做。
  • 您是否尝试过在客户端和服务器之间简单地编写文本?您可能有防火墙或权限问题,无法打开套接字,而忽略 ImageIO 会更容易调试。
  • jup,简单的基于文本的通信就可以了。我的猜测是,协议有问题,因为我完全不知道客户端和服务器在传输图像时实际上在对话什么......我在输入流和输出流以及套接字本身上添加了关闭命令,但它仍然是同一个例外..

标签: java image sockets exception


【解决方案1】:
  1. 您似乎没有编写 HTTP 标头,因此客户端 URLConnection 将无法理解回复并将关闭连接,从而导致发送方的“对等方重置连接”。

    李>
  2. 您无需构造 URI 即可打开文件。

  3. 您根本不需要使用 ImageIO。这只是浪费时间和空间。只需复制字节,就像任何其他文件类型一样。

简而言之,您根本不需要此代码。默认的 servlet 会为您完成。

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2013-02-11
    • 1970-01-01
    相关资源
    最近更新 更多