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
1 2 3 4 5 6 | hello world java 886 do u love it? i love it very much |
tar.txt
1 2 3 4 5 6 | hello world java 886 do u love it? i love it very much |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!