簡體   English   中英

如何從套接字而不是內容接收文件?

[英]How to receive a file from a socket and not its content?

我有一個服務器為客戶端返回文件photo.png ,當我引入此鏈接localhost:5555/photo.png時,服務器正在以客戶端作為瀏覽器正常運行, localhost:5555/photo.png我沒有得到圖片:

\89PNG

\00\00\00
IHDR\00\00\00\00\00\00\00\91\F9\00\00\00gAMA\00\00\B1\8F\FCa\00\00\00sRGB\00\AE\CE\E9\00\00\00PLTELiq\EA\F2\F7\F2\F4\F8\FB\EF\EF\E9\F1\F7\EA\F2\F8\EC\F3\F8\FC\EC\EB\FB\ED\EE\E4\EF\F7\FB\EC\EC\FB\ED\ED\FB\ED\ED\ED\F4\F9\FB\EF\EF\FD\ED\ED\EB\EB\EB\FB\EB\EB\F9\EE\EF\FA\EB\EB\EE\F4\F8\F2\F2\F2\FB\E9\E9\E9\F1\F8\EA\F1\F8\EC\F3\F8\FB\E9\EA\E6\F0\F6\E7\F1\F7\FC\EF\EF\EA\F1\F6\EF\EF\EF\ED\F3\F7\ED\F3\F8\E7\F0\F7\FA\EE\EE\FA\E9\E9\EA\F0\F8\ED\F2\F9\EA\F3\F9\F3\F2\F4\FC\EC\EB\E1"o\B6\E0"\E1!\E0!\E1!  n\B5\E0 \E0k\B4\00f\B2n\B6\E0m\B5   n\B6\00g\B2\E0\E0\DFj\B3\00a\AF\DF\00e\B1l\B4\00i\B3\DF\E0!l\B5\00h\B2\DF\00`\AE    m\B5\E0\E1"\DF\DF\00c\B0\E47:\DF
\E2'*\E0\E5:<\DE    \DE\DF\00d\B0\00_\AE\F2\9D\9F\DE
y\BB\DF ........

這是photo.png圖像后面的代碼或文本,但應顯示的是: photo.ong

當我想要PDF文件而不是文件時,也會發生同樣的情況...

import java.io.*;
import java.net.*;

    public class Server {
        public static void main (String[] args){
            Socket socket;
            ServerSocket serverSocket;
            BufferedReader in = null;
            PrintWriter out = null;
            BufferedInputStream bis;
            BufferedOutputStream bos;

            try{
                serverSocket=new ServerSocket(5555);
                socket = serverSocket.accept();
                out = new PrintWriter(socket.getOutputStream(), true);
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String input, output;

                input = in.readLine(); //(1)
                out.println("Server: Connected. Input from Client:"+input); //(2)

                input = in.readLine(); //(1)
                out.println("Server: I am ready to recieve file.  Input from Client:"+input); //(2)



                bis = new BufferedInputStream(socket.getInputStream());
                bos = new BufferedOutputStream(new FileOutputStream("photo.png"));
                int length = Integer.parseInt(input);
                int i=0;
                int IN=0; 
                byte[] receivedData = new byte[1000];
                while ((IN = bis.read(receivedData)) != length){ //in = int; receivedData = byte[]
                    bos.write(receivedData,0,IN);
                }



            }
            catch(IOException e){
                e.printStackTrace();
            }
        }
    }

該服務器由http://www.coderanch.com實現

我認為您正在嘗試對映像執行文件IO操作。 請參閱以下內容:

如何使ImageIO從InputStream讀取:Java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM