繁体   English   中英

Java Image Server:套接字写入错误

[英]Java Image Server: socket write error

几天前,我考虑过对自己的图像客户端进行编程以直接通过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

我得到的图像传输不正确,但是我应该怎么做? 有什么线索吗?

谢谢你们,提前!

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM