java tcp socket实现

    xiaoxiao2025-09-05  24

    tcpServer:

    public class MyTcpServer implements Runnable { private ServerSocket serverSocket; private ExecutorService pool = Executors.newCachedThreadPool(); public MyTcpServer(int port) throws IOException { serverSocket = new ServerSocket(port); } @Override public void run() { while (true) { try { Socket socket = serverSocket.accept(); pool.execute(new ClientHandler(socket)); } catch (IOException e) { e.printStackTrace(); } } } }

    处理client连接请求的handler:

    public class ClientHandler implements Runnable { private Socket socket; public ClientHandler(Socket socket) { this.socket = socket; } @Override public void run() { try (Socket s = socket) { BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8")); PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream(), "UTF-8"), true); String line = null; while ((line = in.readLine()) != null) { out.println(line.toUpperCase()); out.flush(); if (line.contains("bye")) break; } in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } }

    tcpClient:

    public class MyTcpClient implements Runnable { private Socket socket; public MyTcpClient(String ip, int port) throws IOException { socket = new Socket(ip, port); } @Override public void run() { try (Socket s = socket) { PrintWriter out = new PrintWriter(new OutputStreamWriter( s.getOutputStream(), "UTF-8"), true); BufferedReader in = new BufferedReader(new InputStreamReader( s.getInputStream(), "UTF-8")); Scanner console=new Scanner(System.in); String line = null; while ((line = console.nextLine() )!= null) { if (line.contains("BYE")) { System.out.println(" exit."); break; } out.println(line); out.flush(); System.out.println(in.readLine()); } System.out.println(" exit22222."); console.close(); in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } }

    启动类:

    public class TestTcp { public static void main(String[] args) throws IOException, InterruptedException { MyTcpServer server = new MyTcpServer(1234); new Thread(server).start(); MyTcpClient client = new MyTcpClient("127.0.0.1", 1234); new Thread(client).start(); } }
    最新回复(0)