JavaSE-21.3.6【TCP通信程序练习5】
package day12.lesson3.p5; import java.io.*; import java.net.Socket; /* 3.7 TCP通信程序练习5 案例需求 客户端:数据来自于文本文件,接收服务器反馈 服务器:接收到的数据写入文本文件,给出反馈 案例分析 创建客户端对象,创建输入流对象指向文件,每读入一行数据就给服务器输出一行数据,输出结束后使用shutdownOutput()方法告知服务端传输结束 创建服务器对象,创建输出流对象指向文件,每接受一行数据就使用输出流输出到文件中,传输结束后。使用输出流给客户端反馈信息 客户端接受服务端的回馈信息 相关方法 void shutdownInput() 将此套接字的输入流放置在“流的末尾” void shutdownOutput() 禁止用此套接字的输出流 */ public class ClientDemo { public static void main(String[] args) throws IOException { Socket s = new Socket("MSI-YUBABY", 10000); BufferedReader br = new BufferedReader(new FileReader("stage2\\src\\day12\\lesson3\\p5\\src.txt")); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); String line; while ((line=br.readLine()) != null){ bw.write(line); bw.newLine(); bw.flush(); } /*//自定义结束标记 bw.write("886"); bw.newLine(); bw.flush();*/ //此方法存在的问题:万一所读取的源文本文件中存在“886”,则服务器端接收不到完整的文件内容,只能接收到文件中“886”之前的内容 s.shutdownOutput(); //表示输出结束 //接收反馈 BufferedReader brClient = new BufferedReader(new InputStreamReader(s.getInputStream())); String data = brClient.readLine(); // System.out.println("服务器的反馈:" + data); br.close(); s.close(); } }
1 package day12.lesson3.p5; 2 3 import java.io.*; 4 import java.net.ServerSocket; 5 import java.net.Socket; 6 7 public class ServerDemo { 8 public static void main(String[] args) throws IOException { 9 ServerSocket ss = new ServerSocket(10000); //创建服务器Socket对象 10 11 Socket s = ss.accept(); //监听客户端连接,返回一个对应的Socket对象 12 13 //接收数据 14 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); 15 BufferedWriter bw = new BufferedWriter(new FileWriter("stage2\\src\\day12\\lesson3\\p5\\tar.txt")); 16 17 String line; 18 while ((line=br.readLine()) != null){ // 19 /*if("886".equals(line)){ 20 break; 21 }*/ 22 bw.write(line); 23 bw.newLine(); 24 bw.flush(); 25 } 26 27 //给出反馈 28 BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 29 bwServer.write("文件上传成功"); 30 bwServer.newLine(); 31 bwServer.flush(); 32 33 bw.close(); 34 ss.close(); 35 } 36 }
src.txt
hello world java 886 do u love it? i love it very much
tar.txt
hello world java 886 do u love it? i love it very much