2016-03-05 34 views
2

我有一个返回文件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

+0

不要使用多重缓冲的读者/输入流在同一插座上。你将失去数据。你的标题没有意义。 – EJP

+0

同意@EJP:你期望在哪里有什么?你没有显示你的客户端的代码... – Matthieu

回答

0

实现我想你想的图像上进行文件IO操作。请参阅以下内容:

How to make ImageIO read from InputStream :Java

+0

我怎样才能改变这个服务器来执行?而如果我有一个.png文件,我有一个.zip文件或.pdf? –

+0

尝试将InputStream提供给ImageIO读取方法以获取BufferedImage。然后用BufferedImage做些事情。 BufferedImage bf = ImageIO.read(bis); File outputfile = new File(“saved.png”); Image10.write(bf,“png”,outputfile); – neal

+1

我已阅读,它可能是可能的,而不ImageIO的 –

相关问题