Socket

84 阅读1分钟
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class DomeServer extends Thread {
    private ServerSocket serverSocket;

    public int getPost(){
        return serverSocket.getLocalPort();
    }

    public void run(){
        try {
             serverSocket = new ServerSocket(0);
            while (true){
                Socket socket = serverSocket.accept();
                new Thread(()->{
                    try(PrintStream printStream = new PrintStream(socket.getOutputStream())) {
                        printStream.println("hello");
                        printStream.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }).start();
            }


        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (serverSocket!=null){
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        final DomeServer domeServer = new DomeServer();
        domeServer.start();
        try (final Socket client = new Socket(InetAddress.getLocalHost(),domeServer.getPost())){

            final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
            bufferedReader.lines().forEach(s-> System.out.println(s));

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}