Socket unlimited file upload

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);
        ExecutorService pool = Executors.newFixedThreadPool(8);
        pool.submit(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        receive(serverSocket);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        //serverSocket.close();
    }

    private static void receive(ServerSocket serverSocket) throws IOException {
        Socket socket = serverSocket.accept();
        //获取网络输入流
        InputStream netIn = socket.getInputStream();
        //获取本地输出流
        //文件名随机生成
        long l = System.currentTimeMillis();
        File file = new File("server" + l + ".txt");
        FileOutputStream localOut = new FileOutputStream(file);
        int len=0;
        while ((len = netIn.read()) != -1) {
            localOut.write(len);
        }
        //反馈上传状态
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        if (file.exists()){
            bw.write("成功");
            bw.newLine();
        }else  {
            bw.write("失败");
            bw.newLine();
        }
        socket.shutdownOutput();
        //关闭连接
        socket.close();
    }
}
import java.io.*;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException {
        while (true) {
            Socket socket = new Socket("127.0.0.1",8080);
            //获取网络输出流
            OutputStream netOut = socket.getOutputStream();
            //获取本地输入流
            FileInputStream localIn = new FileInputStream("Client.txt");
            int len=0;
            while ((len = localIn.read()) != -1) {
                netOut.write(len);
            }
            socket.shutdownOutput();
            //接收反馈状态
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
            //关闭连接
            socket.close();
        }
    }
}

Guess you like

Origin www.cnblogs.com/hellsino/p/11870875.html