傳統IO實現客戶端服務端通信

1. 創建服務端

要求:

(1)服務端一直接聽客戶端。

(2)當每一個客戶端與服務端建立連接後,服務端都新建一個線程

(3)線程讀取客戶端發送的請求,打印輸出

package com.wx.socket;

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

public class IOServer {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(8088);
        //接收新連接線程
        new Thread(()->{
            while(true){
                try{
                    //(1)阻塞方法獲取新的連接
                    System.out.println("正在建立連接。。。。");
                    Socket socket = serverSocket.accept();
                    //(2) 每個新的連接都創建一個線程,負責數據讀取
                    new Thread(()->{
                        try{
                            byte[] bytes = new byte[1024];
                            InputStream inputStream = socket.getInputStream();
                            while(true){
                                int len = 0;
                                while((len = inputStream.read(bytes)) != -1){
                                    System.out.println("服務器 "+Thread.currentThread().getName()+" 接收客戶端消息:"+new String(bytes,0,len));
                                }
                            }
                        }catch (Exception e){

                        }
                    }).start();
                }catch (Exception e){

                }
            }
        }).start();

    }
}

2. 創建客戶端

要求:

(1)建立線程

(2)給服務端發送消息

package com.wx.socket;

import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class IOClient {
    public static void main(String[] args) {
        new Thread(()->{
            try{
                Socket socket = new Socket("localhost",8088);
                while(true){
                    socket.getOutputStream().write((Thread.currentThread().getName()+" "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+": Hello world").getBytes());
                    socket.getOutputStream().flush();
                    Thread.sleep(2000);
                }
            }catch (Exception e){

            }
        }).start();
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章