socket的多線程實現


步驟:

  1、服務端創建ServerSocket,循環調用accept()等待客戶端連接;

  2、客戶端創建socket並請求與服務端對話;

  3、服務端接收客戶端的請求,創建socket與客戶端進行專線連接;

  4、服務端監測是否接收到消息,長時間沒有接收到消息則關閉連接;

  public class ServerSocketThread extends Thread{

  private Socket socket = null;

  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();
    }


  }
}

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();
  }
  }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM