無限地吸取知識

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

            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 閱讀(5959) 評論(1)  編輯  收藏 所屬分類: Java基礎類

          Feedback

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


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


          網站導航:
           
          主站蜘蛛池模板: 长葛市| 崇左市| 额敏县| 楚雄市| 怀集县| 五寨县| 无为县| 蒙阴县| 建湖县| 修武县| 江北区| 盖州市| 密云县| 美姑县| 上饶市| 大宁县| 古丈县| 广平县| 新密市| 漾濞| 绥化市| 威宁| 汤阴县| 乐业县| 原平市| 延吉市| 六枝特区| 阿尔山市| 阳江市| 龙陵县| 昭觉县| 黑水县| 留坝县| 东乡族自治县| 钟祥市| 睢宁县| 呼和浩特市| 嘉兴市| 连云港市| 海安县| 调兵山市|