标签:生成 cli 功能 图片 成功 file 套接字 bre static
Java中使用TCP进行数据传输时需要用到两个类:
其中,客户端使用Socket来创建Socket对象,服务端使用ServerSocket来创建Socket对象。
项目实现的功能,将idea_demo/src/net/net01/NetDemo01.java目录下的文件传输到idea_demo/dest.txt路径下;同时,服务端给出客户端响应
import java.io.*;
import java.net.Socket;
public class SendDemo {
public static void main(String[] args) throws IOException {
// 客户端
Socket s = new Socket("192.168.199.124", 2333);
// 封装文本中的数据
BufferedReader br = new BufferedReader(new FileReader("idea_demo\\src\\net\\net01\\NetDemo01.java"));
// 封装输出流写数据
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
bw.flush();
}
// 数据传输完毕后关闭Socket
// shutdownOutput?() 禁用此套接字的输出流
s.shutdownOutput();
// 接收服务器的反馈
BufferedReader brClient = new BufferedReader(new InputStreamReader(s.getInputStream()));
String data = brClient.readLine();
System.out.println("服务器给出的反馈:" + data);
// 释放资源
br.close();
s.close();
}
}
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
// 创建服务端ServerSocket对象
ServerSocket ss = new ServerSocket(2333);
// 获取Socket对象
Socket s = ss.accept();
// 读取数据
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bw = new BufferedWriter(new FileWriter("idea_demo\\dest.txt"));
String line;
while ((line = br.readLine()) != null) {
// 读到886结束输入
if ("886".equals(line)) {
break;
}
// 否则进行写数据操作
bw.write(line);
bw.newLine();
bw.flush();
}
// 给出反馈
BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bwServer.write("文件上传成功");
bwServer.newLine();
bwServer.flush();
}
小提示:先运行接收端,再运行发送端
运行接收端等待数据传输
运行发送端进行文件上传,上传成功后服务器会给给出回应
在idea_demo下生成了dest.txt文件
查看文件内容
标签:生成 cli 功能 图片 成功 file 套接字 bre static
原文地址:https://www.cnblogs.com/shley/p/14966801.html