無限地吸取知識(shí)

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

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            3 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks

          今天復(fù)習(xí)了一下網(wǎng)絡(luò)底層的socket編程,socket編程的大致步驟如下:
          1、創(chuàng)建服務(wù)器端SocketServer,并定義SocketServer的監(jiān)聽端口;
          2、ServerSocket調(diào)用accept( )方法,是指處于阻塞;
          3、創(chuàng)建客戶端的Socket,并設(shè)置服務(wù)器的IP和端口;
          4、客戶端發(fā)送連接請(qǐng)求,建立連接;
          5、分別取得服務(wù)器和客戶端Socket的InputStream和OutputStream;
          6;利用Socket和ServerSocket進(jìn)行數(shù)據(jù)傳輸。

          其中比較重要的只是點(diǎn)是文件的I/O操作,以及Socket的幾個(gè)主要API:

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

          /*
          *服務(wù)器端代碼
          *
          */

          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)
                      {
                          
          // 服務(wù)器接收消息
                          Socket s = ss.accept();
                          InputStreamReader isr 
          = new InputStreamReader(s
                                  .getInputStream());
                          BufferedReader in 
          = new BufferedReader(isr);
                          String line 
          = in.readLine();
                          System.out.println(
          "Client發(fā)送的消息是:  " + line);

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

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

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

                      
          // 接受服務(wù)器端消息
                      BufferedReader in = new BufferedReader(new InputStreamReader(socket
                              .getInputStream()));
                      System.out.println(
          "Server回復(fù)的消息:  " + 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) 評(píng)論(1)  編輯  收藏 所屬分類: Java基礎(chǔ)類

          Feedback

          # re: Socket編程實(shí)現(xiàn)簡單的服務(wù)器與客戶端互發(fā)消息 2009-07-01 17:06 jadmin
          如果是多個(gè)客戶端呢  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宣武区| 象州县| 阿合奇县| 水城县| 屏边| 鞍山市| 平潭县| 德化县| 岱山县| 五台县| 桐乡市| 右玉县| 正定县| 珠海市| 惠安县| 余庆县| 无为县| 台北市| 蓝山县| 汉中市| 邓州市| 晋州市| 铜山县| 肇庆市| 天水市| 遂昌县| 沅江市| 德保县| 浑源县| 太康县| 台江县| 甘孜县| 白银市| 湘乡市| 瑞昌市| 巢湖市| 和静县| 武鸣县| 衡阳市| 孝义市| 改则县|