news 2026/4/21 21:23:57

【使用java创建TCP连接,让服务端读取200MB的本地文件并发送给客户端,客户端接收文件并保存到本地】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【使用java创建TCP连接,让服务端读取200MB的本地文件并发送给客户端,客户端接收文件并保存到本地】

TCP连接发送文件

服务端为java,客户端也为java。(实际场景中客户端和服务端可以为C++)。
使用TCP连接发送文件需要注意:
规定好双方的协议,即发送端要怎么发送,接收端要怎么接收


一、java服务端

publicclassTCPServer{privatestaticfinalintPORT=8081;privatestaticfinalStringFILE_PATH="C:\\Users\\Wasond\\Desktop\\11.zip";// 待发送的 100MB 文件privatestaticfinallongCHUNK_SIZE=1024*1024;// 1MB 分块publicstaticvoidmain(String[]args){// SpringApplication.run(FileServerApplication.class, args);newThread(()->{try(ServerSocketserverSocket=newServerSocket(PORT)){System.out.println("Server started on port "+PORT);while(true){SocketclientSocket=serverSocket.accept();newThread(()->sendFile(clientSocket)).start();}}catch(IOExceptione){e.printStackTrace();}}).start();}privatestaticvoidsendFile(SocketclientSocket){try(java.io.FileInputStreamfileInputStream=newjava.io.FileInputStream(FILE_PATH);DataOutputStreamout=newDataOutputStream(clientSocket.getOutputStream())){longfileSize=newjava.io.File(FILE_PATH).length();out.writeLong(fileSize);// 先发送文件大小(客户端用于进度计算)byte[]buffer=newbyte[(int)CHUNK_SIZE];intbytesRead;longtransferred=0;while(transferred<fileSize){intchunkSize=(int)Math.min(CHUNK_SIZE,fileSize-transferred);bytesRead=fileInputStream.read(buffer,0,chunkSize);if(bytesRead==-1)break;// 文件读取完毕// 发送分块数据out.writeInt(bytesRead);// 发送当前块实际大小out.write(buffer,0,bytesRead);transferred+=bytesRead;}System.out.println("File sent successfully. Total bytes: "+transferred);}catch(IOExceptione){e.printStackTrace();}finally{try{clientSocket.close();}catch(IOExceptione){e.printStackTrace();}}}}

二、java客户端

importjava.io.*;importjava.net.Socket;publicclassTCPClient{privatestaticfinalStringSERVER_HOST="localhost";privatestaticfinalintSERVER_PORT=8081;privatestaticfinalStringOUTPUT_FILE="C:\\Users\\Wasond\\Desktop\\777.zip";publicstaticvoidmain(String[]args){try(Socketsocket=newSocket(SERVER_HOST,SERVER_PORT);DataInputStreamin=newDataInputStream(socket.getInputStream());FileOutputStreamfos=newFileOutputStream(OUTPUT_FILE)){// 1. 读取文件总大小longfileSize=in.readLong();System.out.println("Receiving file (size: "+fileSize+" bytes)");// 2. 分块接收并写入本地文件longreceived=0;while(received<fileSize){intchunkSize=in.readInt();// 读取当前块大小byte[]buffer=newbyte[chunkSize];// in.readFully(buffer); // 确保读取完整块// 替换 in.readFully(buffer) 为更安全的读取方式intbytesRead=0;while(bytesRead<chunkSize){intresult=in.read(buffer,bytesRead,chunkSize-bytesRead);if(result==-1){thrownewIOException("Unexpected end of stream");}bytesRead+=result;}fos.write(buffer);received+=chunkSize;// 打印进度(可选)System.out.printf("Progress: %.2f%%\n",(received*100.0/fileSize));}System.out.println("File received and saved to "+OUTPUT_FILE);}catch(IOExceptione){e.printStackTrace();}}}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 13:36:30

网盘直链下载助手扩展开发:集成HunyuanOCR识别功能

网盘直链下载助手扩展开发&#xff1a;集成HunyuanOCR识别功能 在日常使用网盘时&#xff0c;你是否曾为一张扫描讲义、一份发票截图或一段PDF缩略图中的文字无法复制而烦恼&#xff1f;手动输入费时费力&#xff0c;第三方在线OCR工具又存在隐私泄露风险——图片上传到不明服务…

作者头像 李华
网站建设 2026/4/18 13:44:01

论文降AI率要求20%以下?论文降AI率工具怎么选

现如今&#xff0c;越来越多人开始用AI写论文&#xff0c;据统计&#xff0c;73%以上的大学生都表示曾使用过ai来辅助写论文。然而&#xff0c;各大查重平台也开始严格查AI率&#xff0c;各大高校也有明文规定&#xff0c;AI率超过30%的视为学术不端行为&#xff0c;直接影响学…

作者头像 李华
网站建设 2026/4/21 1:35:54

Surya OCR横向评测:数学公式与表格识别能力对比

HunyuanOCR横向评测&#xff1a;数学公式与表格识别能力深度解析 在教育数字化浪潮席卷全球的今天&#xff0c;一份科研论文中的复杂公式、一张财务报表里的嵌套表格&#xff0c;往往成为自动化处理流程中的“拦路虎”。传统OCR面对这些非线性内容时频频失手——要么把积分符号…

作者头像 李华
网站建设 2026/4/19 6:43:28

星露谷物语SMAPI模组加载器完全指南:从安装到精通

星露谷物语SMAPI模组加载器完全指南&#xff1a;从安装到精通 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 欢迎来到《星露谷物语》模组世界的完整指南&#xff01;SMAPI&#xff08;Stardew Modd…

作者头像 李华
网站建设 2026/4/20 21:28:14

AI创业新方向:基于lora-scripts提供定制化LoRA模型训练SaaS服务

AI创业新方向&#xff1a;基于lora-scripts提供定制化LoRA模型训练SaaS服务 在生成式AI浪潮席卷各行各业的今天&#xff0c;内容创作者、品牌方和开发者都面临一个共同挑战&#xff1a;如何让大模型真正“懂自己”&#xff1f;通用模型虽然强大&#xff0c;但在表达特定艺术风格…

作者头像 李华
网站建设 2026/4/18 18:48:27

终极GitHub加速方案:3分钟告别访问卡顿

作为一名开发者&#xff0c;你是否经常遇到GitHub页面加载缓慢、代码克隆超时、文件下载中断的困扰&#xff1f;这些问题不仅影响工作效率&#xff0c;更可能阻碍技术学习和项目进展。现在&#xff0c;Fast-GitHub将为你带来全新的开发体验&#xff0c;彻底解决这些痛点。 【免…

作者头像 李华