Java Socket編程,小案例(有注釋)


一、Socket編程

  在網絡編程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相關的技術。

二、案例

 1.服務端

  • ① 創建ServerSocket對象,綁定監聽端口
  • ② 通過accept()方法監聽客戶端請求
  • ③ 連接建立后,通過輸入流讀取客戶端發送的請求信息
  • ④ 通過輸出流向客戶端發送相應信息
  • ⑤ 關閉相關資源
     1 package cn.kgc.sockettest.demo1;
     2 
     3 import java.io.*;
     4 import java.net.ServerSocket;
     5 import java.net.Socket;
     6 
     7 /**
     8  * 服務端
     9  *
    10  * @author
    11  * @create 2019-07-23 14:16
    12  **/
    13 public class server {
    14     public static void main(String[] args) {
    15         try {
    16             ServerSocket serverSocket = new ServerSocket(8080);
    17             System.out.println("服務器啟動完成...監聽啟動!");
    18             //開啟監聽,等待客戶端的訪問
    19             Socket socket = serverSocket.accept();
    20             // 獲取輸入流,因為是客戶端向服務器端發送了數據
    21             InputStream inputStream = socket.getInputStream();
    22             // 創建一個緩沖流
    23             BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
    24             String info = null;
    25             while ((info = br.readLine())!=null){
    26                 System.out.println("這里是服務端 客戶端是:"+info);
    27             }
    28             //向客戶端做出響應
    29             OutputStream outputStream = socket.getOutputStream();
    30             info = "這里是服務器端,我們接受到了你的請求信息,正在處理...處理完成!";
    31             outputStream.write(info.getBytes());
    32             outputStream.close();
    33         } catch (IOException e) {
    34             e.printStackTrace();
    35         }
    36     }
    37 }

    2.客戶端

  • ① 創建Socket對象,指明需要連接的服務器的地址和端口號
  • ② 連接建立后,通過輸出流想服務器端發送請求信息
  • ③ 通過輸入流獲取服務器響應的信息
  • ④ 關閉響應資源
    package cn.kgc.sockettest.demo1;
    
    import java.io.*;
    import java.net.Socket;
    
    /**
     * 客戶端
     *
     * @author
     * @create 2019-07-23 14:17
     **/
    public class Client {
        public static void main(String[] args) {
            try {
                Socket socket = new Socket("localhost",8080);
                OutputStream outputStream = socket.getOutputStream();
                String info = "你好啊!";
                //輸出!
                outputStream.write(info.getBytes());
                socket.shutdownOutput();
                //接收服務器端的響應
                InputStream inputStream = socket.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
                while ((info = br.readLine())!=null){
                    System.out.println("接收到了服務端的響應!" + info);
                }
                //刷新緩沖區
                outputStream.flush();
                outputStream.close();
                inputStream.close();
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    然后,先執行服務端,再執行客戶端的代碼就可以了。這只是個小案例,有什么不足之處,請各位指教!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM