黑马程序员技术交流社区

标题: TCP上传图片,2M图片变300M,来个大神大神 [打印本页]

作者: 潘才新    时间: 2013-11-5 23:21
标题: TCP上传图片,2M图片变300M,来个大神大神
  1. package test;

  2. import java.io.BufferedReader;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStream;
  7. import java.net.Socket;
  8. import java.net.UnknownHostException;

  9. public class TCPUploadClientPic {

  10.         /*
  11.          * 上传图片
  12.          */
  13.         public static void main(String[] args) throws UnknownHostException, IOException {
  14.                 // TODO Auto-generated method stub
  15.                 //socket服务
  16.                 Socket socket=new Socket("pcx",4444);
  17.                 OutputStream outputStream=socket.getOutputStream();
  18.                 //字节输入流,读取一个图片文件
  19.                 FileInputStream fileInputStream=new FileInputStream("d:\\2.JPG");
  20.                
  21.                 int len=0;
  22.                 byte[] buf=new byte[1024];
  23.                 while((len=fileInputStream.read(buf))!=-1){
  24.                         outputStream.write(buf,0,len);
  25.                 }
  26.                 socket.shutdownOutput();
  27.                 BufferedReader ServersReturn=new BufferedReader(new InputStreamReader(socket.getInputStream()));
  28.                 //显示服务器返回的信息
  29.                 System.out.println(" 服务器信息:"+ServersReturn.readLine());
  30.                 outputStream.close();
  31.                 ServersReturn.close();
  32.                 socket.close();
  33.         }

  34. }
复制代码
  1. package test;

  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;

  9. public class TCPUploadServersPic {

  10.         /*
  11.          *上传图片的服务器端
  12.          */
  13.         public static void main(String[] args) throws IOException {
  14.                 // TODO Auto-generated method stub
  15.                 ServerSocket serverSocket=new ServerSocket(4444);
  16.                 Socket socket =serverSocket.accept();
  17.                 File file=new File("d:\\upload");
  18.                 if(!file.exists())
  19.                         file.mkdirs();
  20.                 InputStream inputStream=socket.getInputStream();
  21.                 FileOutputStream fileOutputStream= new FileOutputStream(file+File.separator+System.currentTimeMillis()+".jpg");
  22.                 int len=0;
  23.                 byte[] buf=new byte[1024];
  24.                 while((len=inputStream.read())!=-1){
  25.                         fileOutputStream.write(buf,0,len);
  26.                 }
  27.                 OutputStream outputStream=socket.getOutputStream();
  28.                 outputStream.write("上传成功".getBytes());
  29.                 fileOutputStream.close();
  30.                 socket.close();
  31.                 serverSocket.close();
  32.         }

  33. }
复制代码
如题~~,亲,帮解决一下

作者: 李慧声    时间: 2013-11-5 23:41
本帖最后由 李慧声 于 2013-11-5 23:52 编辑

兄弟,你服务端27行    while((len=inputStream.read())!=-1)--》里面没有读到缓冲区buf中,jvm读爆了,挂了,不跟你玩了~两种写法啊:
while((len = inputStream .read()) != -1)
outputStream.write(len);
或者就按你写的:
int len = 0;
byte[] bytes = new byte[1024];
while((len = inputStream .read(bytes)) != -1)
        outputStream.write(bytes, 0, len);
但是你两个合起来写就挂了
while((len =  inputStream .read()) != -1)
     outputStream.write(bytes, 0, len);就这挂了,bytes里面都没东西,你写啥呢,你说是吧~~~~
可能是你忘了写了吧~

作者: cuilitang    时间: 2013-11-7 21:20
李慧声 发表于 2013-11-5 23:41
兄弟,你服务端27行    while((len=inputStream.read())!=-1)--》里面没有读到缓冲区buf中,jvm读爆了,挂 ...

赞!赞!赞!赞!赞!赞!赞!赞!赞!
作者: 潘才新    时间: 2013-11-7 22:48
李慧声 发表于 2013-11-5 23:41
兄弟,你服务端27行    while((len=inputStream.read())!=-1)--》里面没有读到缓冲区buf中,jvm读爆了,挂 ...

大意呀,看了好多遍没注意到那里没写,惭愧!
作者: 李慧声    时间: 2013-11-8 00:30
cuilitang 发表于 2013-11-7 21:20
赞!赞!赞!赞!赞!赞!赞!赞!赞!

O(∩_∩)O哈哈哈~
作者: 李慧声    时间: 2013-11-8 00:31
潘才新 发表于 2013-11-7 22:48
大意呀,看了好多遍没注意到那里没写,惭愧!

哦 呵呵 正常正常~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2