無限地吸取知識

          快樂就是一生中最大的享受!

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            3 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks

          今天復習了一下網絡底層的socket編程,socket編程的大致步驟如下:
          1、創建服務器端SocketServer,并定義SocketServer的監聽端口;
          2、ServerSocket調用accept( )方法,是指處于阻塞;
          3、創建客戶端的Socket,并設置服務器的IP和端口;
          4、客戶端發送連接請求,建立連接;
          5、分別取得服務器和客戶端Socket的InputStream和OutputStream;
          6;利用Socket和ServerSocket進行數據傳輸。

          其中比較重要的只是點是文件的I/O操作,以及Socket的幾個主要API:

          1、getInputStream();    //返回Socket接收到的InputStream
          2、getOutputStream(); //返回Socket向外傳輸(另一端為接收)的OutputStream
          3、ServerSocket 的accept() //使服務器處于阻塞狀態,直到客戶端連接

          /*
          *服務器端代碼
          *
          */

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.PrintWriter;
          import java.net.ServerSocket;
          import java.net.Socket;

          public class Server
          {
              
          public static void main(String[] args)
              {
                  
          new Server();
              }

              
          public Server()
              {
                  
          try
                  {
                      ServerSocket ss 
          = new ServerSocket(8888);
                      
          while (true)
                      {
                          
          // 服務器接收消息
                          Socket s = ss.accept();
                          InputStreamReader isr 
          = new InputStreamReader(s
                                  .getInputStream());
                          BufferedReader in 
          = new BufferedReader(isr);
                          String line 
          = in.readLine();
                          System.out.println(
          "Client發送的消息是:  " + line);

                          
          // 把成功信息反饋回客戶端
                          PrintWriter out = new PrintWriter(s.getOutputStream(), true);
                          out.println(
          "已經接受到消息了!");

                          out.close();
                          in.close();
                          isr.close();
                          s.close();
                      }
                  }
                  
          catch (IOException e)
                  {
                      e.printStackTrace();
                  }

              }
          }

          /*
          *
          *客戶端代碼
          */
          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.PrintWriter;
          import java.net.Socket;
          import java.net.UnknownHostException;

          public class Client
          {
              
          public static void main(String[] args)
              {
                  
          new Client();
              }

              
          public Client()
              {
                  
          try
                  {
                      System.out.println(
          "正在連接Server中");

                      Socket socket 
          = new Socket("localhost"8888);

                      System.out.println(
          "連接成功!");
                      System.out.println();

                      
          // 向服務器發消息
                      PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                      BufferedReader br 
          = new BufferedReader(new InputStreamReader(
                              System.in));
                      System.out.print(
          "請輸入信息:");
                      out.println(br.readLine());

                      
          // 接受服務器端消息
                      BufferedReader in = new BufferedReader(new InputStreamReader(socket
                              .getInputStream()));
                      System.out.println(
          "Server回復的消息:  " + in.readLine());

                      br.close();
                      out.close();
                      in.close();
                      socket.close();
                  }
                  
          catch (UnknownHostException e)
                  {
                      e.printStackTrace();
                  }
                  
          catch (IOException e)
                  {
                      e.printStackTrace();
                  }
              }
          }
          posted on 2007-09-15 17:13 Sylar 閱讀(5960) 評論(1)  編輯  收藏 所屬分類: Java基礎類

          Feedback

          # re: Socket編程實現簡單的服務器與客戶端互發消息 2009-07-01 17:06 jadmin
          如果是多個客戶端呢  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 长治县| 马公市| 寻乌县| 响水县| 焉耆| 阳江市| 福清市| 中宁县| 华阴市| 临泽县| 孟村| 南丹县| 常山县| 时尚| 武山县| 浠水县| 阜平县| 五华县| 昌黎县| 儋州市| 子洲县| 青州市| 丘北县| 彰武县| 雅安市| 大名县| 肇东市| 宝兴县| 纳雍县| 富宁县| 正安县| 桑日县| 财经| 天镇县| 峨边| 准格尔旗| 清新县| 甘南县| 交口县| 邢台县| 波密县|