A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码
如题~~,亲,帮解决一下

5 个回复

倒序浏览
本帖最后由 李慧声 于 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里面都没东西,你写啥呢,你说是吧~~~~
可能是你忘了写了吧~
回复 使用道具 举报
李慧声 发表于 2013-11-5 23:41
兄弟,你服务端27行    while((len=inputStream.read())!=-1)--》里面没有读到缓冲区buf中,jvm读爆了,挂 ...

赞!赞!赞!赞!赞!赞!赞!赞!赞!
回复 使用道具 举报
李慧声 发表于 2013-11-5 23:41
兄弟,你服务端27行    while((len=inputStream.read())!=-1)--》里面没有读到缓冲区buf中,jvm读爆了,挂 ...

大意呀,看了好多遍没注意到那里没写,惭愧!
回复 使用道具 举报
cuilitang 发表于 2013-11-7 21:20
赞!赞!赞!赞!赞!赞!赞!赞!赞!

O(∩_∩)O哈哈哈~
回复 使用道具 举报
潘才新 发表于 2013-11-7 22:48
大意呀,看了好多遍没注意到那里没写,惭愧!

哦 呵呵 正常正常~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马