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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李挺 中级黑马   /  2013-2-22 11:22  /  1889 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package day27;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.BufferedWriter;
  5. import java.io.FileOutputStream;
  6. import java.io.OutputStreamWriter;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;

  9. public class FileService {
  10.         public static void main(String[] args) throws Exception {
  11.                 ServerSocket ss=new ServerSocket(10010);
  12.                 Socket s=ss.accept();
  13.                 String ip=s.getInetAddress().getHostAddress();
  14.                 BufferedInputStream bufin=new BufferedInputStream(s.getInputStream());
  15.                 BufferedOutputStream bufoFromSys=new BufferedOutputStream(new FileOutputStream("new.jpg"));
  16.                 BufferedWriter bufwToSc=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  17.                 byte[] buf=new byte[1024];
  18.                 int len=0;
  19.                 while ((len=bufin.read(buf))!=-1)
  20.                 {
  21.                         bufoFromSys.write(buf);
  22.                         bufoFromSys.flush();
  23.                 }
  24.                 bufwToSc.write("恭喜你上传成功");
  25.                 bufwToSc.newLine();
  26.                 ss.close();
  27.                 bufin.close();
  28.                 bufoFromSys.close();
  29.                 bufwToSc.close();
  30.                 System.out.println(ip+"上传了一个文件");
  31.         }
  32. }
复制代码
  1. package day27;

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

  10. public class FileClient {
  11.         public static void main(String[] args) throws UnknownHostException, IOException {
  12.                 Socket sc=new Socket("10.7.74.7", 10010);
  13.                 BufferedInputStream bufinFromSys=new BufferedInputStream(new FileInputStream("pic1.jpg"));
  14.                 BufferedOutputStream bufo=new BufferedOutputStream(sc.getOutputStream());
  15.                 BufferedReader bufrFromSc=new BufferedReader(new InputStreamReader(sc.getInputStream()));
  16.                 byte[] buf=new byte[1024];
  17.                 int len=0;
  18.                 while ((len=bufinFromSys.read(buf))!=-1)
  19.                 {
  20.                         bufo.write(buf, 0, len);
  21.                         bufo.flush();
  22.                 }
  23.                 sc.shutdownOutput();
  24.                 String str=bufrFromSc.readLine();
  25.                 //if (str.contains("恭喜"))
  26.                 //System.out.println("上传成功");
  27.                         System.out.println(str);
  28.                
  29.                 sc.close();               
  30.                 bufo.close();
  31.                 bufinFromSys.close();
  32.         }

  33. }
复制代码
一运行就报错啊:
Exception in thread "main" java.net.SocketException: Socket closed
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:116)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
        at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
        at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:316)
        at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:149)
        at java.io.OutputStreamWriter.close(OutputStreamWriter.java:233)
        at java.io.BufferedWriter.close(BufferedWriter.java:266)
        at day27.FileService.main(FileService.java:31)
不知道什么问题,Socket closed 端口关闭 这也太难懂了吧

1 个回复

倒序浏览
关资源要先开的后关。。。你把两个socket资源先关了就不能再去关其中的输入输出流了。。。你可以把socket关资源的代码放到最后
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马