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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangleixhlm 中级黑马   /  2014-5-21 16:56  /  915 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wangleixhlm 于 2014-5-21 22:41 编辑

定义了两个类,一个客户端,一个服务端。上传本地图片的程序。
客户端代码如下:
  1. class clientGawa
  2. {
  3.         public static void main (String []args) throws Exception
  4.         {
  5.                 BufferedInputStream bisfile = new BufferedInputStream(new FileInputStream("a.jpg"));
  6.                
  7.                 Socket s = new Socket("192.168.2.101",1205);
  8.                 BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
  9.                
  10.                 byte[] buff = new byte[1024];
  11.                
  12.                 while(bisfile.read(buff) != -1)
  13.                 {
  14.                         bos.write(buff);
  15.                         bos.flush();
  16.                 }
  17.                 s.shutdownOutput();
  18.                
  19.                 BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
  20.                 byte[] buf = new byte[1024];
  21.                 System.out.println(bis.read(buf));
  22.                
  23.                 bisfile.close();
  24.                 s.close();
  25.         }
  26. }
复制代码


服务器端如下:
  1. class serverGawa
  2. {
  3.         public static void main (String []args) throws Exception
  4.         {
  5.                 BufferedOutputStream bosfile = new BufferedOutputStream(new FileOutputStream("b.jpg"));
  6.                
  7.                 ServerSocket ss = new ServerSocket(1205);
  8.                 Socket s = ss.accept();
  9.                 System.out.println(s.getInetAddress().getHostAddress() + "....Connected");
  10.                
  11.                 BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
  12.                 byte[] buff = new byte[1024];
  13.         
  14.                 while(bis.read(buff) != -1)
  15.                 {
  16.                         bosfile.write(buff);
  17.                         bosfile.flush();
  18.                 }
  19.                
  20.                 PrintWriter bos = new PrintWriter(s.getOutputStream());
  21.                 bos.write("upload successful");

  22.                 bosfile.close();
  23.                 ss.close();               
  24.         }

  25. }
复制代码


运行结果如下:

Exception in thread "main" java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.io.BufferedInputStream.fill(Unknown Source)
        at java.io.BufferedInputStream.read1(Unknown Source)
        at java.io.BufferedInputStream.read(Unknown Source)
        at java.io.FilterInputStream.read(Unknown Source)
        at clientGawa.main(test4.java:33)

这是什么原因?求大神解答啊!

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
本帖最后由 skill20 于 2014-5-21 22:49 编辑
  1. //。这个不用flush。  
  2. while(bisfile.read(buff) != -1)
  3.                 {
  4.                         bos.write(buff);
  5.                         bos.flush();
  6.                 }
  7.                 s.shutdownOutput();
复制代码
回复 使用道具 举报

改了一下服务端的代码,把PrintWriter换掉就好了
  1.                 OutputStream bos = s.getOutputStream();
  2.                 bos.write("upload successful".getBytes());
复制代码
回复 使用道具 举报
小小菜鸟101 来自手机 中级黑马 2014-6-12 09:02:01
板凳
不用Blush会有什么影响没
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马