古之成大事者,不唯有超世之才,亦唯有堅韌不拔之志也!

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            3 隨筆 :: 44 文章 :: 1 評論 :: 0 Trackbacks
          多線程式:
          在實際使用過程中我們都會希望服務(wù)端能同時為多個客戶端提供服務(wù)
          最直接的辦法就是每個客戶端一個線程
          這種方式會在一定意義上占用更多系統(tǒng)資源
          package com.lei.socket.test;

          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.OutputStreamWriter;
          import java.net.ServerSocket;
          import java.net.Socket;

          public class MultiThreadServer {

              
          //啟動服務(wù)端監(jiān)聽
              public void start(){
                  
          try{
                      ServerSocket server 
          = new ServerSocket(port);
                      Socket client 
          = null;
                      
          while(runFlag){
                          client 
          = server.accept();
                          System.out.println(
          "accept client " + client.getInetAddress().getHostAddress());
                          
          new Thread(new ClientHandle(client)).start();
                      }
                      server.close();
                  }
          catch(IOException e){
                      System.out.println(
          "start error");
                  }
              }
              
              
          public static void main(String[] args){
                  MultiThreadServer s 
          = new MultiThreadServer();
                  s.start();
              }
              
              
          class ClientHandle implements Runnable{
                  
          public ClientHandle(Socket s){
                      
          this.client = s;
                  }
                  
                  
          //處理客戶端請求
                  public void handleClient(){
                      
          try{
                          BufferedReader inReader 
          = new BufferedReader(new InputStreamReader(client.getInputStream()));
                          BufferedWriter outWriter 
          = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
                          
          while(true){
                              outWriter.write(
          "please input String->");
                              outWriter.flush();
                              String str 
          = inReader.readLine();
                              
          if(str.equalsIgnoreCase("quit")){
                                  outWriter.write(
          "quit ok");
                                  client.close();
                                  
          break;
                              }
                              
          else{
                                  outWriter.write(
          "reulst is :" + new StringBuffer(str).reverse().toString());
                                  outWriter.write(
          "\r\n");
                              }
                          }
                      }
          catch(IOException e){
                          System.out.println(
          "Handle client error");
                      }
                  }
                  
                  
          public void run(){
                      handleClient();
                  }
                  
                  
          private Socket client;
              }
              
              
          private int port = 3000;
              
              
          private boolean runFlag = true;
          }





          posted on 2008-09-19 14:33 goto 閱讀(248) 評論(0)  編輯  收藏 所屬分類: SOCKET
          主站蜘蛛池模板: 马龙县| 普兰县| 柳河县| 绵阳市| 宜都市| 密云县| 澄城县| 柳州市| 娄底市| 繁峙县| 无锡市| 浏阳市| 屏山县| 乐亭县| 平遥县| 应城市| 南阳市| 玛沁县| 密云县| 商都县| 四平市| 静乐县| 嘉义市| 禄丰县| 宜昌市| 交城县| 巍山| 广饶县| 鹿泉市| 当阳市| 开阳县| 岢岚县| 桦川县| 襄樊市| 天全县| 新乐市| 广平县| 南城县| 上饶县| 扬中市| 永泰县|