[JAVA]Socket 图片流的传输

import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        System.out.println("--->server");
        try {
            ServerSocket server = new ServerSocket(4700);
            Socket socket = server.accept();
            DataInputStream dis = new DataInputStream(socket.getInputStream());
            String type = dis.readUTF();
            System.out.println("type: " + type);

            // long len = dis.readLong();
            // System.out.println("len: " + len);

            byte[] buff = new byte[1024];
            OutputStream os = new FileOutputStream("C:/Users/Administrator/Desktop/dts.jpg");
            int len = -1;
            while ((len = dis.read(buff)) != -1) {
                os.write(buff, 0, len);
            }
            os.flush();
            os.close();
            dis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("server--->");
    }
}
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.Socket;

public class Client {
    public static void main(String args[]) {
        try {
            Socket socket = new Socket("127.0.0.1", 4700);
            if (socket.isConnected()) {
                System.out.println("isConnected");
                DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
                dos.writeUTF("STREAM");
                File file = new File("C:/Users/Administrator/Desktop/src.jpg");
                // dos.writeLong(file.length());
                byte[] buff = new byte[1024];
                InputStream inputStream = new FileInputStream(file);
                int len = -1;
                while ((len = inputStream.read(buff)) != -1) {
                    dos.write(buff, 0, len);
                }
                inputStream.close();
                dos.flush();
                dos.close();
            }
            // socket.close(); // 关闭Socket
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
原文地址:https://www.cnblogs.com/afluy/p/3815695.html