Java网络编程之TCP数据传输(文件上传)

时间:2021-07-05 18:36:35   收藏:0   阅读:0

Code

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文件

技术图片

查看文件内容

技术图片

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!