1. 程式人生 > >Netty(二):簡單的客戶端服務端demo

Netty(二):簡單的客戶端服務端demo

cat println 客戶端連接 監聽端口 rbo 異常 服務端 max auth

使用Java IO實現客戶端服務端

服務端監聽端口

客戶端連接服務端

客戶端循環寫數據到服務端

import java.io.IOException;
import java.net.Socket;

/**
 * @author ko
 */
public class Client {
    private static final String HOST = "127.0.0.1";
    private static final int PORT = 8000;
    private static final int SLEEP_TIME = 5000;

    public static void
main(String[] args) throws IOException { final Socket socket = new Socket(HOST, PORT); new Thread(new Runnable() { @Override public void run() { System.out.println("客戶端啟動成功!"); while (true) { try { String message
= "hello world"; System.out.println("客戶端發送數據: " + message); socket.getOutputStream().write(message.getBytes()); } catch (Exception e) { System.out.println("寫數據出錯!"); } sleep(); } } }).start(); }
private static void sleep() { try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException e) { e.printStackTrace(); } } }

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class ClientHandler {

    public static final int MAX_DATA_LEN = 1024;
    private final Socket socket;

    public ClientHandler(Socket socket) {
        this.socket = socket;
    }

    public void start() {
        System.out.println("新客戶端接入");
        new Thread(new Runnable() {
            @Override
            public void run() {
                doStart();
            }
        }).start();
    }

    private void doStart() {
        try {
            InputStream inputStream = socket.getInputStream();
            while (true) {
                byte[] data = new byte[MAX_DATA_LEN];
                int len;
                while ((len = inputStream.read(data)) != -1) {
                    String message = new String(data, 0, len);
                    System.out.println("客戶端傳來消息: " + message);
                    socket.getOutputStream().write(data);
                }

            }


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

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    private ServerSocket serverSocket;

    public Server(int port) {
        try {
            this.serverSocket = new ServerSocket(port);
            System.out.println("服務端啟動成功,端口:" + port);
        } catch (IOException exception) {
            System.out.println("服務端啟動失敗");
        }
    }

    public void start() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                doStart();
            }
        }).start();
    }

    private void doStart() {
        while (true) {
            try {
                Socket client = serverSocket.accept();
                new ClientHandler(client).start();
            } catch (IOException e) {
                System.out.println("服務端異常");
            }
        }
    }
}

/**
 * @author ko
 */
public class ServerBoot {

    private static final int PORT = 8000;

    public static void main(String[] args) {
        Server server = new Server(PORT);
        server.start();
    }

}

Netty(二):簡單的客戶端服務端demo