簡體   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