socket的多線程實現

步驟:socket

  一、服務端建立ServerSocket,循環調用accept()等待客戶端鏈接;ide

  二、客戶端建立socket並請求與服務端對話;this

  三、服務端接收客戶端的請求,建立socket與客戶端進行專線鏈接;server

  四、服務端監測是否接收到消息,長時間沒有接收到消息則關閉鏈接;資源

  public class ServerSocketThread extends Thread{get

  private Socket socket = null;input

  public ServerSocketThread (Socket socket){
  this.socket = socket;
  }
  @Override
  public void run(){
    try {
      InputStream inputStream = socket.getInputStream();
      OutputStream outputStream = socket.getOutputStream();
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
      if(bufferedReader.readLine()!=null){
        String read = bufferedReader.readLine();
        System.out.println(read);
        System.out.println(str2HexStr(read));
      }
    /**
    * 關閉輸出流
    */
    socket.shutdownOutput();


    /**
    * 關閉相對應的資源
    */
    outputStream.close();
    bufferedReader.close();
    inputStream.close();
    socket.close();
    } catch (IOException e) {
    e.printStackTrace();
    }


  }
}

io

public class SocketServer {
  public static void main(String[] args) {
    try {
      ServerSocket serverSocket = new ServerSocket(8888);
      Socket socket = null;
      int clientCount = 0;

      while(true){
        socket = serverSocket.accept();
        ServerSocketThread serverSocketThread = new ServerSocketThread(socket);
        serverSocketThread.start();
        clientCount++;
        System.out.println("客戶端數量爲:"+clientCount);
      }
    } catch (IOException e) {
    e.printStackTrace();
  }
  }
}class

相關文章
相關標籤/搜索