TCP-C/S结构,客户端向服务器端发送文件,并以指定路径与文件名保存
2020-01-15 11:16
1396 查看
客户端向服务端发送一个文件,并且在发送的时候指定这个路径和要保存的名字,
服务端收到后根据客户端发送过来的信息,用该名字保存数据到指定的路径
比如说客户端发送的结构为 :dir , filename , data 服务端收到后根据对应的来保存
客户端:
public class TCPClient { public static void main(String[] args) { //创建一个Fiel对象。构造方法中绑定要上传的数据路径 File file = new File("X:\\XX\\XXX\\java.txt"); //定义一个客户端 Socket socket = null; //定义一个本地字节输入流 FileInputStream fis = null; //定义一个对象序列化流 ObjectOutputStream oos = null; try { //获取客户端对象,构造方法中传递,服务器IP地址,和端口号 socket = new Socket("192.168.0.0", 8080); //获取要读取的文件,构造方法中传递file对象 fis = new FileInputStream(file); //定义一个数组,存放读取到的数据 byte[] bytes = new byte[1024]; //读取数据 fis.read(bytes); //创建一个对象,构造方法中传递指定的目录,文件名以及读取到的文件数据 Path path = new Path("X:\\XX\\XX", "java.txt", bytes); //获取到序列化流对象,构造方法中传递,客户端socket对象的网络字节输出流 oos = new ObjectOutputStream(socket.getOutputStream()); //将创建的对象,序列化,将对象以流的形式写入 oos.writeObject(path); } catch (IOException e) { e.printStackTrace(); } finally { try { //关闭资源 oos.close(); fis.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } //创建一个对象,实现了SeriaLiable接口,用于序列化 class Path implements Serializable { //对象中定义三个属性 String dir;//指定的文件目录 String filename;//文件名 byte[] data;//文件数据 //无参构造 public Path() { } //全参构造 public Path(String dir, String filename, byte[] data) { this.dir = dir; this.filename = filename; this.data = data; } }
服务器端:
public class TCPServer { public static void main(String[] args) { //定义一个服务器 ServerSocket server = null; //定义一个本地字节输出流 FileOutputStream fos = null; //定义一个对象的反序列化流 ObjectInputStream ois = null; try { //获取服务器对象,构造方法中绑定特定端口 server = new ServerSocket(8080); //使用服务器对象的方法,获取到访问服务器的客户端对象socket Socket socket = server.accept(); //获取反序列化流对象,构造方法中传递客户端对象的网络字节输入流 ois = new ObjectInputStream(socket.getInputStream()); //使用反序列化流对象,读取到传递过来的对象 Object readObject = ois.readObject(); //将对象强转 Path path = (Path) readObject; //创建一个File对象,构造方法中传递客户端指定的路径 File file = new File(path.dir); //file对象使用创建多级目录方法,如果有,则不创建,没有则创建 file.mkdirs(); //获取本地输出流对象,构造方法中传递要输出的路径以及指定的文件名 fos = new FileOutputStream(file + File.separator + path.filename); //直接写入数据 fos.write(path.data); } catch (ClassNotFoundException e){ e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } finally { try { //关闭资源 fos.close(); ois.close(); server.close(); } catch (IOException e) { e.printStackTrace(); } } } }
以上方法还可以继续完善,如服务器回写等
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- TCP编程例三:从客户端发送文件给服务器端,服务器端保存到本地,并返回“发送成功”给客户端。
- Java Socket TCP 通信,实现聊天室,服务器端指定客户端发送消息
- 如何将服务器端文件 自动下载并保存到客户端IE临时文件夹 或者指定文件夹
- c#客户端图片上传到服务器端文件并且把路径保存到SQL数据库
- 利用TCP从客户端往服务器端发送一个文件过程中发生的问题
- 10.获取客户端指定路径下的文件目录,并传输至服务器端--客户端
- JAVA 服务器端的文件保存到客户端指定目录
- 10.获取客户端指定路径下的文件目录,并传输至服务器端--服务器端
- C语言把内存的文件保存到硬盘时如何把文件名由用户通过屏幕自己设置,并且保存到指定的路径
- TCP练习1:服务器端读取图片并发送给客户端,客户端保存图片到本地
- 读取文件夹所有文件并保存文件名至指定文件
- 无法删除文件夹 出现:无法删除Cmcmcmcm:找不到指定文件。请确定指定的路径及文件名是否正确。
- java使用poi把从数据库中取出的数据写入到excel文件中并保存到指定文件路径
- Android客户端通过TCP接收服务器端发送的数据
- 【Bash】实现指定目录下的文件编码转换,以原文件名保存
- 使用TCP传输从客户端上传文件到服务器端
- android手机客户端上传文件,java servlet服务器端接收并保存到服务器
- android客户端把SD卡文件上传到服务器端并保存在PC硬盘文件夹中
- 关于创建Excel表格问题(保存至指定文件/弹出直接打开还是下载,并可以选择保存路径的对话框)
- 客户端上传文件&服务器端保存数据