JAVA涂鴉
          關于JAVA的點點滴滴
          posts - 50,  comments - 689,  trackbacks - 0
              這是一個比較簡單的例子來說明socket編程,服務器端使用了多線程來監聽客戶端。
             
              服務器端的代碼:
              package SocketTest;

              import java.io.*;
              import java.net.*;
              import java.util.*;

              class SocketServer{
                  public SocketServer(){
                      Socket incoming;
                      ServerSocket so;
                      try{
                          so= new ServerSocket(8001);
                          System.out.println("等待客戶端連接。");
                      
                          while(true){
                              try{
                                  incoming = so.accept( );
                                    System.out.println("已連接客戶端。");
                                    GetInfo gi=new GetInfo(incoming);//調用線程
                               } catch (IOException e){
                                  e.printStackTrace();
                               }
                          }
                      }catch (IOException e){
                           e.printStackTrace();
                      }
                  }
             
                  public static void main(String[] args){
                      new SocketServer();
                  }
             
                  private static class GetInfo implements Runnable{   //線程類
                      private Socket incoming;
                      private String s=null;
                      private BufferedReader b;
                      Thread t;
                 
                      public GetInfo(Socket incoming){
                          try{
                              this.incoming=incoming;
                              b=new BufferedReader(new InputStreamReader(incoming.getInputStream()));
                         
                              t=new Thread(this);
                              t.start();
                          }catch(IOException e){
                              e.printStackTrace();
                          }   
                      }
                 
                      public void run(){
                          try{
                              while (true){
                                  s=b.readLine();
                                  System.out.println(s);
                                  if(s.equals("end")){
                                      break;
                                  }
                              } 
                          }catch(IOException e){
                              e.printStackTrace();
                          }
                      }
                  }
                
               }


              客戶端的代碼:
              package SocketTest;

              import java.io.*;
              import java.net.*;
              import java.util.*;

              public class SocketClient{
             
                 public static void main(String[] args){
                
                         try{
                            Socket so = new Socket("localhost", 8001);
                            System.out.println("連接服務器。");
                       
                            BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
                             
                            OutputStream outStream = so.getOutputStream();
                            PrintWriter out = new PrintWriter(outStream);
                 
                            String s=null;
                            while (true){
                              s=b.readLine();
                              out.println("Client:"+s);
                              out.flush();
                              if(s.equals("end")){
                                   break;
                              }    
                            }
                      }catch (IOException e){
                        e.printStackTrace();
                      }
                 }
              }



          posted on 2005-10-10 14:04 千山鳥飛絕 閱讀(2700) 評論(2)  編輯  收藏 所屬分類: J2SE

          FeedBack:
          # re: 多線程實現對多個客戶端的監聽.[未登錄]
          2010-03-02 23:07 | 清風
          兄弟 我也成功實現了 謝了  回復  更多評論
            
          # re: 多線程實現對多個客戶端的監聽.[未登錄]
          2014-08-23 17:59 | 哼哼
          @清風
          抄誰不會
            回復  更多評論
            
          正在閱讀:



          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(35)

          隨筆檔案

          文章分類

          文章檔案

          好友的blog

          我的其他blog

          老婆的Blog

          搜索

          •  

          積分與排名

          • 積分 - 776235
          • 排名 - 56

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 蕲春县| 赫章县| 化德县| 健康| 汕头市| 太白县| 宜黄县| 柳江县| 中宁县| 会泽县| 宁蒗| 威宁| 庆安县| 鹰潭市| 张家界市| 衡东县| 内江市| 东明县| 二连浩特市| 吉首市| 阿拉善右旗| 临潭县| 曲水县| 嵊泗县| 车险| 社旗县| 兰西县| 黄平县| 丹江口市| 塔城市| 徐闻县| 班玛县| 鹰潭市| 乐昌市| 康马县| 弥渡县| 环江| 木里| 新宾| 庆城县| 竹北市|