TCP实现图片上传

TCP实现图片上传

本文使用java语法实现了图片上传的功能,未涉及数据库存储。如有需要将输出流存入数据库即可。

客户端

实现步骤

  • 使用Socket与服务器建立连接
  • 创建一个输出流,用于传输图片
  • 读取需要传输的图片
  • 将图片以字节的形式写入输出流
  • 告知服务器发送完成
  • 确认服务器是否接受
  • 释放资源

实现代码

public class Client {
    
    
    public static void main(String[] args) throws Exception {
    
    
        // 建立一个socket连接
        InetAddress serverIp = InetAddress.getByName("127.0.0.1");
        int port = 2001;
        Socket socket = new Socket(serverIp,port);
        // 创建一个输出流
        OutputStream os = socket.getOutputStream();
        // 读取文件
        FileInputStream fis = new FileInputStream("warmClient.jpg");
        // 写文件
        byte[] buffer = new byte[1024];
        int len = 0 ;
        while((len = fis.read(buffer)) != -1) {
    
    
            os.write(buffer,0,len);
        }
        // 告知发送完毕
        socket.shutdownOutput();
        // 确实服务器接受完毕
        InputStream is = socket.getInputStream();
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] buffer2 = new byte[1024];
        int len2 = 0;
        while((len2 = is.read(buffer2)) != -1) {
    
    
            byteArrayOutputStream.write(buffer2,0,len2);
        }
        System.out.println(byteArrayOutputStream.toString());
        // 释放资源
        byteArrayOutputStream.close();
        is.close();
        fis.close();
        os.close();
        socket.close();
    }
}

服务端

实现步骤

  • 创建一个serverSocket服务
  • 监听客户端是否连接
  • 创建一个输入流,用于存储接收到的信息
  • 文件输出
  • 通知客户端接受完成
  • 释放资源

实现代码

public class Serve {
    
    
    public static void main(String[] args) throws Exception {
    
    
        // 创建服务
        ServerSocket serverSocket = new ServerSocket(2001);
        // 监听客户端连接
        Socket socket = serverSocket.accept();
        // 获取输入流
        InputStream is = socket.getInputStream();
        // 文件输出
        FileOutputStream fos = new FileOutputStream(new File("warmServer.jpg"));
        byte[] buffer = new byte[1024];
        int len = 0;
        while((len = is.read(buffer))!= -1) {
    
    
            fos.write(buffer,0,len);
        }
        // 通知客户端接受完成
        OutputStream os = socket.getOutputStream();
        os.write("接受完毕".getBytes());
        // 释放资源
        os.close();
        fos.close();
        is.close();
        socket.close();
        serverSocket.close();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44204997/article/details/120506734