TCP实现文件上传
Tcp客户端
步骤
- 得知服务端地址,端口,创建socket连接
- 创建输出流
- 创建文件输入流来读取文件
- 通过输出流将文件写出
- 通知服务端已经传输完毕
- 接收服务端传回的接收完毕信息
- 关闭流
客户端代码:
package com.example.code.netWork.tcpfile;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
//Tcp客户端
public class TcpUploadFileClient {
    public static void main(String[] args) throws Exception {
        //1.得知服务端地址端口
        Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 2020);
        //2.创建输出流
        OutputStream outputStream = socket.getOutputStream();
        //3.读取文件
        FileInputStream fStream =
                new FileInputStream(new File("src\\main\\java\\com\\example\\code\\netWork\\tcpfile\\123456.jpeg"));
        //4.将文件写出
        byte[] buffer = new byte[2048];
        int len;
        while ((len = fStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, len);
        }
        //5.通知服务端我已经传完了
        socket.shutdownOutput();
        //6.确定服务端已经接收完毕,断开连接
        InputStream inputStream = socket.getInputStream();
        ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
        byte[] buffer2 = new byte[2048];
        int len2;
        while ((len2 = inputStream.read(buffer2)) != -1) {
            byteOutputStream.write(buffer2, 0, len2);
        }
        System.out.println(byteOutputStream.toString());
        //7.关闭流
        byteOutputStream.close();
        inputStream.close();
        fStream.close();
        outputStream.close();
        socket.close();
    }
}
Tcp客户端
步骤
- 设置服务端端口号
- 监听客户端连接
- 输入流
- 通过文件输出流保存文件
- 接收完毕通知客户端
- 关闭流
客户端代码:
package com.example.code.netWork.tcpfile;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
//Tcp服务端
public class TcpUploadFileServer {
    public static void main(String[] args) throws Exception {
        //1.设置服务端端口
        ServerSocket socket = new ServerSocket(2020);
        //2.对客户机进行监听
        Socket socket2 = socket.accept();
        //3.获取输入流
        InputStream in = socket2.getInputStream();
        //4.文件输出
        FileOutputStream out = new FileOutputStream(new File("src\\main\\java\\com\\example\\code\\netWork\\tcpfile\\recevier.jpeg"));
        byte[] buffer = new byte[2048];
        int len;
        while ((len = in.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
        //5.若接收完毕,通知客户端接收完毕
        OutputStream outputStream = socket2.getOutputStream();
        outputStream.write("我接收完毕!".getBytes());
        //6.关闭流
        outputStream.close();
        out.close();
        in.close();
        socket2.close();
        socket.close();
    }
}
          本文由
          没有翅膀却想飞上天空
          原创发布于
          阳光沙滩
          ,未经作者授权,禁止转载
        
 




























