黑马程序员技术交流社区

标题: 网络编程TCP对文件上传 [打印本页]

作者: 逆世界ylm    时间: 2014-12-21 15:13
标题: 网络编程TCP对文件上传
  1. package com.ccsu.net;

  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.io.PrintWriter;
  8. import java.net.ServerSocket;
  9. import java.net.Socket;
  10. import java.net.UnknownHostException;

  11. /**
  12. * 使用TCP完成文件的上传
  13. * @author Administrator
  14. *
  15. */
  16. class Server5
  17. {
  18.         public static void main(String[] args) throws IOException {
  19.                 ServerSocket ss = new ServerSocket(8888);
  20.                 Socket s = ss.accept();
  21.                 PrintWriter p = new PrintWriter(s.getOutputStream(),true);
  22.                 String ip = s.getInetAddress().getHostAddress();
  23.                 System.out.println(ip+"...connected");
  24.                 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  25.                 PrintWriter out = new PrintWriter(new FileWriter("d:\\test\\Server5.txt"),true);
  26.                 String line = null;
  27.                 while((line=br.readLine()) != null)
  28.                 {
  29.                         out.println(line);
  30.                 }
  31.                 //s.shutdownInput();
  32.                 p.println("上传成功");
  33.                 br.close();
  34.                 s.close();
  35.         }
  36. }
  37. class Client5
  38. {
  39.         public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
  40.                 Socket s = new Socket("127.0.0.1",8888);
  41.                 BufferedReader br = new BufferedReader(new FileReader("d:\\test\\Bean.java"));
  42.                 BufferedReader brin = new BufferedReader(new InputStreamReader(s.getInputStream()));
  43.                 PrintWriter p = new PrintWriter(s.getOutputStream(),true);
  44.                 String line = null;
  45.                 while((line=br.readLine()) != null)
  46.                 {
  47.                         p.println(line);
  48.                        
  49.                 }
  50.                
  51.                 s.shutdownOutput();
  52.                 //Thread.sleep(1000);
  53.                 System.out.println(brin.readLine());
  54.                 brin.close();
  55.                 br.close();
  56.                 s.close();
  57.         }
  58. }
复制代码
为什么客户端发送数据后要关闭Socket输出流,而服务端不要关闭Socket输入流


作者: bjuth    时间: 2014-12-21 15:25
你服务器端的代码里 缺少 while(true)循环接收




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