java socket模拟CS架构下文件上传功能
操作:先启动服务器,在启动客户端进行服务器的访问
一,客户端代码
package socket; import java.io.*; import java.net.Socket; public class client { /** * 1,读取文件到文件输入流中inputStream * 2,声明一个socket,将inputStream中的数据写入到socket下的输出流,用来发送给服务器处理,记得将截止字符写入流中,防止阻塞 * 3,等待服务器的处理 * 4,获取socket中的输入流,读取服务器写入输入流中的信息 * 5,资源关闭 */ public static void main(String[] args) throws IOException { FileInputStream inputStream = new FileInputStream("C:\\Users\\建江\\Desktop\\Stock.zip"); Socket socket = new Socket("127.0.0.1", 8088); OutputStream outputStream = socket.getOutputStream(); //将file写入到socket中的输出流,用来发送数据 int len; byte[] caches = new byte[1024]; while ((len=inputStream.read(caches))!=-1) { outputStream.write(caches,0, len); } //将流的截止字符写入流,防止阻塞 socket.shutdownOutput(); InputStream socketInputStream = socket.getInputStream(); while ((len=socketInputStream.read(caches))!=-1) { System.out.println(new String(caches,0,len)); } inputStream.close(); socket.close(); } }
二,服务端代码
package socket; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Random; public class server { /** * 1,声明一个服务器 * 2,从accept中获取客户端发送过来的socket * 3,读取socket中的输出流,将其写入文件中 * 4,将回复客户端消息写入到socket的输出流中 * 5,资源关闭 */ public static void main(String[] args) throws IOException { ServerSocket sever = new ServerSocket(8088); while (true) { new Thread(() -> { try { Socket socket = sever.accept(); InputStream inputStream = socket.getInputStream(); File file = new File("C:\\Users\\建江\\Desktop\\学习文档"); if (!file.exists()) { file.mkdir(); } String fileName= "stock"+System.currentTimeMillis()+new Random().nextInt(9999)+".zip"; FileOutputStream outputStream = new FileOutputStream(file+"\\"+fileName); int len; byte[] cache = new byte[1024]; while ((len=inputStream.read())!=-1) { outputStream.write(cache,0, len); } socket.getOutputStream().write("写入完成".getBytes()); outputStream.close(); socket.close(); }catch (IOException e) { e.printStackTrace(); } }).start(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本