国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

這篇具有很好參考價(jià)值的文章主要介紹了網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 什么是網(wǎng)絡(luò)編程

網(wǎng)絡(luò)編程是指網(wǎng)絡(luò)上的主機(jī),通過不同的進(jìn)程,以編程的方式實(shí)現(xiàn) 網(wǎng)絡(luò)通信(或稱為網(wǎng)絡(luò)數(shù)據(jù)傳輸)

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

只要滿足不同的進(jìn)程就可以進(jìn)行通信,所以即便是在同一個(gè)主機(jī),只要不同的進(jìn)程,基于網(wǎng)絡(luò)傳輸數(shù)據(jù),也屬于網(wǎng)絡(luò)編程

2. 網(wǎng)絡(luò)編程中的基本概念

1)發(fā)送端和接收端

在一次網(wǎng)絡(luò)傳輸中:

發(fā)送端: 數(shù)據(jù)的 發(fā)送方進(jìn)程,稱為發(fā)送端。發(fā)送端主機(jī)即網(wǎng)絡(luò)通信中的源主機(jī)

接收端: 數(shù)據(jù)的 接收方進(jìn)程,稱為接收端。接收端主機(jī)即網(wǎng)絡(luò)通信中的目的主機(jī)

收發(fā)端: 發(fā)送端和接收端兩端,簡稱為收發(fā)端

注意: 發(fā)送端和接收端只是相對的,只是一次網(wǎng)絡(luò)數(shù)據(jù)傳輸產(chǎn)生數(shù)據(jù)流向后的概念

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

2)請求和響應(yīng)

一般來說,獲取一個(gè)網(wǎng)絡(luò)資源時(shí),涉及到兩次網(wǎng)絡(luò)數(shù)據(jù)傳輸

  • 第一次:請求數(shù)據(jù)的發(fā)送
  • 第二次:響應(yīng)數(shù)據(jù)的發(fā)送

就好比在飯店里點(diǎn)了一碗面

顧客先發(fā)起請求:來一碗面

飯店再做出響應(yīng):提供一碗面

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

3)客戶端和服務(wù)端

服務(wù)端: 在常見的網(wǎng)絡(luò)傳輸場景下,把 提供服務(wù) 的一方進(jìn)程,稱為服務(wù)端,可以對外提供服務(wù)

客戶端: 獲取服務(wù) 的一方進(jìn)程,稱為客戶端

對于服務(wù)來說,一般是提供:

  • 客戶端獲取服務(wù)資源

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

  • 客戶端保存資源到服務(wù)端

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

4)常見的客戶端服務(wù)端模型

在常見的場景中,客戶端是指給用戶使用的程序,服務(wù)端是指提供用戶服務(wù)的程序,具體流程如下:

  1. 客戶端發(fā)送請求到服務(wù)端
  2. 服務(wù)端根據(jù)請求數(shù)據(jù),執(zhí)行相應(yīng)的業(yè)務(wù)處理
  3. 服務(wù)端返回響應(yīng):發(fā)送業(yè)務(wù)處理結(jié)果
  4. 客戶端根據(jù)響應(yīng)數(shù)據(jù),展示處理結(jié)果

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

3. Socket 套接字

Socket 套接字時(shí)由系統(tǒng)提供用于網(wǎng)絡(luò)通信的技術(shù),是基于 TCP/IP 協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。基于 Socket 套接字的網(wǎng)絡(luò)程序開發(fā)就是網(wǎng)絡(luò)編程

1)Socket 的分類

常用的 Socket 套接字有以下兩類:

  • 流套接字: 使用 TCP 協(xié)議

    傳輸數(shù)據(jù)基于 IO 流,流式數(shù)據(jù)的特征就是在 IO 流沒有關(guān)閉的情況下,是無邊界的數(shù)據(jù),可以多次發(fā)送數(shù)據(jù),也可以分開多次接收

  • 數(shù)據(jù)報(bào)套接字: 使用 UDP 協(xié)議

    傳輸數(shù)據(jù)是一塊一塊的,每一塊數(shù)據(jù)必須一次性發(fā)送,接受也必須一次性接受,不能分開發(fā)送或接收

2)Java 數(shù)據(jù)報(bào)套接字通信模型

UDP 協(xié)議具有無連接、面向數(shù)據(jù)報(bào)的特征,即每次傳輸都是沒有建立連接,并且一次發(fā)送全部數(shù)據(jù),一次接收全部數(shù)據(jù)

Java 中使用 UDP 協(xié)議通信時(shí),主要基于 DatagramSocket 類來創(chuàng)建數(shù)據(jù)報(bào)套接字,并使用 DatagramPacket 作為發(fā)送或者接受的數(shù)據(jù)報(bào)。

具體流程如下:

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

3)Java 流套接字通信模型

TCP 協(xié)議具有有連接、面向字節(jié)流的特征,即傳輸數(shù)據(jù)之前要先建立連接,并且數(shù)據(jù)的傳輸是基于 IO 流的

具體流程如下:

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

4. UDP 數(shù)據(jù)報(bào)套接字編程

1)DatagramSocket API

DatagramSocket 是 UDP Socket,用于發(fā)送和接收 UDP 數(shù)據(jù)報(bào)

構(gòu)造方法:

方法簽名 方法說明
DatagramSocket() 創(chuàng)建一個(gè) UDP 數(shù)據(jù)報(bào)套接字的 Socket,綁定到本機(jī)任意一個(gè)隨機(jī)端口
DatagramSocket(int port) 創(chuàng)建一個(gè) UDP 數(shù)據(jù)報(bào)套接字的 Socket,綁定到本機(jī)的指定端口上

實(shí)例方法:

方法簽名 方法說明
void receive(DatagramPacket p) 接收數(shù)據(jù)報(bào)到提前構(gòu)造的 DatagramPacket 對象中(如果沒有接收到數(shù)據(jù)報(bào),該方法會阻塞等待)
void send(DatagramPacket p) 發(fā)送提前構(gòu)造的 DatagramPacket 數(shù)據(jù)報(bào)
void close() 關(guān)閉套接字

2)DatagramPacket API

DatagramPacket 是 UDP Socket 發(fā)送和接收的數(shù)據(jù)報(bào)

構(gòu)造方法:

方法簽名 方法說明
DatagramPacket(byte[] buf, int length) 構(gòu)造一個(gè) DatagramPacket 對象用來接收數(shù)據(jù)報(bào),接收的數(shù)據(jù)保存到字節(jié)數(shù)組中
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) 構(gòu)造 DatagramPacket 用來發(fā)送數(shù)據(jù)報(bào),發(fā)送的數(shù)據(jù)為字節(jié)數(shù)組中的數(shù)據(jù)。指定目的主機(jī)的 IP 和端口號

實(shí)例方法:

方法簽名 方法說明
InetAddress getAddress() 從數(shù)據(jù)報(bào)中,獲取 IP 地址
int getPort() 從數(shù)據(jù)報(bào)中,獲取端口號
byte[] getData() 獲取數(shù)據(jù)報(bào)中的數(shù)據(jù)

3)示例

使用 UDP Socket 套接字完成一個(gè)簡單的翻譯小程序

客戶端向服務(wù)端發(fā)起翻譯請求,服務(wù)端接收到請求后,對請求進(jìn)行處理,再向客戶端做出響應(yīng)

服務(wù)端

服務(wù)端接收到請求之后,在我們?nèi)藶橐?guī)定的 map 中進(jìn)行查詢,再對客戶端做出響應(yīng)

public class Server {
    private final static HashMap<String, String> map = new HashMap<>();
    static {
        map.put("蘋果", "apple");
        map.put("香蕉", "banana");
        map.put("梨", "pear");
        map.put("電腦", "computer");
        map.put("手機(jī)", "phone");
    }

    public static void main(String[] args) throws IOException {
        // 得到 socket 對象,并對其綁定端口號
        Log.println("服務(wù)器開啟并且綁定了 8080 端口");
        DatagramSocket socket = new DatagramSocket(8080);

        // 循環(huán)接受和處理請求
        while (true) {
            // 準(zhǔn)備接收數(shù)據(jù)的容器
            byte[] buf = new byte[1024];
            // 包裝數(shù)據(jù)包
            DatagramPacket received = new DatagramPacket(buf, 0, 1024);
            // 接收請求
            Log.println("服務(wù)器準(zhǔn)備接受請求");
            socket.receive(received);
            Log.println("服務(wù)器接受到了請求");

            // 處理請求
            InetAddress address = received.getAddress();    // 得到發(fā)起請求方的 IP
            Log.println("對方的地址:" + address);
            int port = received.getPort();      // 得到發(fā)起請求方的端口號
            Log.println("對方的端口:" + port);
            int length = received.getLength();      // 得到請求中真實(shí)有效的數(shù)據(jù)長度
            Log.println("真實(shí)的數(shù)據(jù)長度:" + length);

            byte[] realData = Arrays.copyOf(buf, length);   // 得到請求中真實(shí)有效的數(shù)據(jù)
            // 將請求數(shù)據(jù)轉(zhuǎn)換成 String
            String request = new String(realData, 0, length, StandardCharsets.UTF_8);
            Log.println("請求中的數(shù)據(jù):\r\n" + request);
            // 人為規(guī)定請求和相應(yīng)的格式
            // 請求格式必須以 “我是請求:\r\n” 開始,以 “\r\n” 結(jié)束
            if (!request.startsWith("我是請求:\r\n")) {
                Log.println("請求格式出錯(cuò)");
                // 請求出錯(cuò)
                continue;
            }

            if (!request.endsWith("\r\n")) {
                Log.println("請求格式出錯(cuò)");
                // 請求出錯(cuò)
                continue;
            }
            // 得到請求中的英文單詞
            String EnglishWord = request.substring("我是請求:\r\n".length(), request.length() - 2);
            Log.println("請求中的英文單詞:" + EnglishWord);
            // 進(jìn)行翻譯
            String ChineseWord = map.getOrDefault(EnglishWord, "我不知道");
            Log.println("翻譯后的中文:" + ChineseWord);
            // 將翻譯后的結(jié)果進(jìn)行包裝
            String response = String.format(ChineseWord, "%s\r\n");
            byte[] bytes = response.getBytes(StandardCharsets.UTF_8);

            // 包裝數(shù)據(jù)包
            DatagramPacket send = new DatagramPacket(bytes, 0, bytes.length, address, port);
            // 發(fā)起響應(yīng)
            Log.println("準(zhǔn)備發(fā)送響應(yīng)");
            socket.send(send);
            Log.println("相應(yīng)發(fā)送成功");
        }
    }
}

客戶端

public class Client {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        DatagramSocket socket = new DatagramSocket(9999);
        while (sc.hasNextLine()) {
            String str = sc.nextLine();
            String send = "我是請求:\r\n" + str + "\r\n";
            byte[] bytes = send.getBytes();
            DatagramPacket request = new DatagramPacket(bytes, 0, bytes.length, InetAddress.getLoopbackAddress(), 8080);
            socket.send(request);

            // 接收響應(yīng)
            byte[] buf = new byte[1024];
            DatagramPacket datagramPacket = new DatagramPacket(buf, 0, 1024);
            socket.receive(datagramPacket);
            int n = datagramPacket.getLength();
            String response = new String(buf, 0, n, StandardCharsets.UTF_8);
            Log.println(response);
        }
    }
}

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

5. TCP 流套接字編程

1)ServerSocket API

用于創(chuàng)建 TCP 服務(wù)端 Socket 的 API

構(gòu)造方法:

方法簽名 方法說明
ServerSocket(int port) 創(chuàng)建一個(gè)服務(wù)端流套接字 Socket,并綁定到指定端口

實(shí)例方法:

方法簽名 方法說明
Socket accept() 等待客戶端發(fā)起連接,連接成功后返回一個(gè) Socket 對象
void close() 關(guān)閉 Socket

2)Socket API

這里的 Socket 是客戶端 Socket,或服務(wù)端中接收到客戶端連接請求后,accept 方法返回的服務(wù)端 Socket

不管是客戶端還是服務(wù)端 Socket,都是雙方建立連接后,保存對端信息,以及用來與對方收發(fā)數(shù)據(jù)的

構(gòu)造方法:

方法簽名 方法說明
Socket(String host, int port) 創(chuàng)建一個(gè)客戶端流套接字,并與對應(yīng) IP 的主機(jī),對應(yīng)端口的進(jìn)程建立連接

實(shí)例方法:

方法簽名 方法說明
InetAddress getInetAddress() 返回套接字所連接的 IP 地址
InputStream getInputStream() 返回套接字的輸入流
OutputStream getOutputStream() 返回套接字的輸出流

3)示例

使用 TCP Socket 套接字完成一個(gè)簡單的翻譯小程序

完成的效果和上文 UDP 的小程序效果一樣

不過在 TCP 這里有長短連接的區(qū)分,所以有兩個(gè)版本的代碼,在長連接版本中加入了并發(fā)編程,使得同一個(gè)服務(wù)端可以被多個(gè)客戶端所連接

a. 短連接版本

客戶端:

public class 短連接版本Client {
    public static void main(String[] args) throws IOException {
        for (int i = 0; i < 3; i++) {
            Socket socket = new Socket("127.0.0.1", 8080);      // 撥號

            OutputStream os = socket.getOutputStream();
            OutputStreamWriter writer = new OutputStreamWriter(os, "UTF-8");
            PrintWriter printWriter = new PrintWriter(writer);

            printWriter.printf("我是請求\r\n%s\r\n", "蘋果");
            printWriter.flush();

            InputStream is = socket.getInputStream();
            Scanner scanner = new Scanner(is, "UTF-8");
            String header = scanner.nextLine();
            String word = scanner.nextLine();
            System.out.println(word);

            socket.close();     // 掛電話
        }
    }
}

服務(wù)端:

public class 短連接版本Server {
    private final static HashMap<String, String> map = new HashMap<>();
    static {
        map.put("蘋果", "apple");
        map.put("香蕉", "banana");
        map.put("梨", "pear");
        map.put("電腦", "computer");
        map.put("手機(jī)", "phone");
    }

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);

        while(true) {
            Log.println("等待客戶端建立連接");
            Socket socket = serverSocket.accept();
            Log.println("客戶端連接成功");

            InetAddress address = socket.getInetAddress();
            Log.println("客戶端 IP 地址:" + address);
            int port = socket.getPort();
            Log.println("客戶端端口號:" + port);

            InputStream is = socket.getInputStream();
            Scanner sc = new Scanner(is, "UTF-8");
            String header = sc.nextLine();
            String EnglishWord = sc.nextLine();
            Log.println("請求中的英文單詞為:" + EnglishWord);

            String ChineseWord = map.getOrDefault(EnglishWord, "我不知道");
            Log.println("翻譯后的中文為:" + ChineseWord);

            Log.println("準(zhǔn)備響應(yīng)");
            OutputStream os = socket.getOutputStream();
            OutputStreamWriter writer = new OutputStreamWriter(os);
            PrintWriter printWriter = new PrintWriter(writer);
            printWriter.printf("OK!\r\n%s\t\n", ChineseWord);
            printWriter.flush();
            Log.println("響應(yīng)成功");

            socket.close();
            Log.println("斷開連接");
        }
    }
}

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))

b. 長連接并發(fā)版本

在長連接版本中,必須服務(wù)端和客戶端同時(shí)支持長連接才可以進(jìn)行通信

如果不清楚長連接和短連接,可以去看看我上篇文章,里面有介紹長連接和短連接,HTTP 和 HTTPS,有介紹 HTTP 的長短連接,實(shí)質(zhì)上就是 TCP 長短連接

客戶端:

public class Client {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        Socket socket = new Socket("127.0.0.1", 8080);

        OutputStream os = socket.getOutputStream();
        OutputStreamWriter writer = new OutputStreamWriter(os, StandardCharsets.UTF_8);
        PrintWriter printWriter = new PrintWriter(writer);

        InputStream is = socket.getInputStream();
        Scanner scanner = new Scanner(is, "UTF-8");

        while (sc.hasNextLine()) {
            String str = sc.nextLine();
            printWriter.printf("我是請求:\r\n%s\r\n", str);
            printWriter.flush();

            // 接收響應(yīng)
            String header = scanner.nextLine();
            String response = scanner.nextLine();
            Log.println(header + "\r\n" + response);
        }
        socket.close();
    }
}

服務(wù)端:

public class Server {
    private final static HashMap<String, String> map = new HashMap<>();
    static {
        map.put("蘋果", "apple");
        map.put("香蕉", "banana");
        map.put("梨", "pear");
        map.put("電腦", "computer");
        map.put("手機(jī)", "phone");
    }

    private final static class ServerTask implements Runnable {
        private final Socket socket;

        private ServerTask(Socket socket) {
            this.socket = socket;
        }

        @Override
        public void run() {
            InetAddress address = socket.getInetAddress();
            Log.println("客戶端 IP 地址為:" + address);
            int port = socket.getPort();
            Log.println("客戶端端口號為:" + port);

            try {
                InputStream is = socket.getInputStream();
                // 請求格式必須以 “我是請求:\r\n” 開始,以 “\r\n” 結(jié)束
                Scanner sc = new Scanner(is, "UTF-8");

                // 進(jìn)行響應(yīng)
                OutputStream os = socket.getOutputStream();
                OutputStreamWriter writer = new OutputStreamWriter(os, StandardCharsets.UTF_8);
                PrintWriter printWriter = new PrintWriter(writer);


                while (sc.hasNextLine()) {
                    String header = sc.nextLine();
                    String EnglishWord = sc.nextLine();
                    Log.println("請求中的詞為:" + EnglishWord);

                    // 對請求進(jìn)行處理
                    String ChineseWord = map.getOrDefault(EnglishWord, "我不知道");
                    Log.println("翻譯后的詞:" + ChineseWord);

                    Log.println("準(zhǔn)備發(fā)起響應(yīng)");
                    printWriter.printf("OK!\r\n%s\r\n", ChineseWord);
                    printWriter.flush();
                    Log.println("響應(yīng)成功");
                }

                socket.close();
                Log.println("連接已關(guān)閉");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) throws IOException {
        // 使用多線程完成多用戶同時(shí)在線的功能
        ExecutorService threadPool = Executors.newFixedThreadPool(3);


        ServerSocket serverSocket = new ServerSocket(8080);
        Log.println("綁定端口到 8080");

        while (true) {
            Log.println("等待客戶端連接");
            Socket socket = serverSocket.accept();
            Log.println("客戶端連接成功");

            ServerTask serverTask = new ServerTask(socket);
            threadPool.execute(serverTask);
        }
    }
}

網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))文章來源地址http://www.zghlxwxcb.cn/news/detail-438597.html

到了這里,關(guān)于網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報(bào)套接字和流套接字分別實(shí)現(xiàn)一個(gè)小程序(附源碼))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程 和 Socket 套接字認(rèn)識

    【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程 和 Socket 套接字認(rèn)識

    ?個(gè)人主頁:bit me?? ?當(dāng)前專欄:Java EE初階?? 用戶在瀏覽器中,打開在線視頻網(wǎng)站,如優(yōu)酷看視頻,實(shí)質(zhì)是通過網(wǎng)絡(luò),獲取到網(wǎng)絡(luò)上的一個(gè)視頻資源。 與本地打開視頻文件類似,只是視頻文件這個(gè)資源的來源是網(wǎng)絡(luò)。 相比本地資源來說,網(wǎng)絡(luò)提供了更為豐富的網(wǎng)絡(luò)資源:

    2023年04月15日
    瀏覽(516)
  • 網(wǎng)絡(luò)編程—Socket套接字詳解

    網(wǎng)絡(luò)編程—Socket套接字詳解

    目錄 一、網(wǎng)絡(luò)編程 1.1、為什么需要網(wǎng)絡(luò)編程? 1.2、什么是網(wǎng)絡(luò)編程 1.3、發(fā)送端和接收端 ?編輯1.4、請求和響應(yīng) ?編輯1.5、客戶端和服務(wù)端? 二、Socket套接字? 2.1、概念 2.2、分類? 2.2.1、流套接字? 2.2.2、數(shù)據(jù)報(bào)套接字? 2.2.3、原始套接字? 2.3、Socket編程注意事項(xiàng)? 1.1、為什

    2024年02月16日
    瀏覽(101)
  • 「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(一)

    「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(一)

    「前言」文章是關(guān)于網(wǎng)絡(luò)編程的socket套接字方面的,下面開始講解! 「歸屬專欄」網(wǎng)絡(luò)編程 「主頁鏈接」個(gè)人主頁 「筆者」楓葉先生(fy) 「楓葉先生有點(diǎn)文青病」「每篇一句」 春風(fēng)得意馬蹄疾,一日看盡長安花。 ——孟郊《登科后》 目錄 一、預(yù)備知識 1.1 源IP和目的IP 1.

    2024年02月09日
    瀏覽(87)
  • [JAVAee]網(wǎng)絡(luò)編程-套接字Socket

    [JAVAee]網(wǎng)絡(luò)編程-套接字Socket

    目錄 基本概念 發(fā)送端與接收端 請求與響應(yīng) ?編輯客戶端與服務(wù)器 Socket套接字? 分類 數(shù)據(jù)報(bào)套接字 流套接字傳輸模型?? UDP數(shù)據(jù)報(bào)套接字編程 DatagramSocket API DatagramPacket API InetSocketAddress API 示例一: 示例二: TCP流數(shù)據(jù)報(bào)套接字編程 ServerSocket API Socket API 示例一: ? 網(wǎng)絡(luò)編程指的

    2024年02月13日
    瀏覽(126)
  • 網(wǎng)絡(luò)編程『socket套接字 ‖ 簡易UDP網(wǎng)絡(luò)程序』

    網(wǎng)絡(luò)編程『socket套接字 ‖ 簡易UDP網(wǎng)絡(luò)程序』

    ??個(gè)人主頁: 北 海 ??所屬專欄: Linux學(xué)習(xí)之旅、神奇的網(wǎng)絡(luò)世界 ??操作環(huán)境: CentOS 7.6 阿里云遠(yuǎn)程服務(wù)器 在當(dāng)今數(shù)字化時(shí)代,網(wǎng)絡(luò)通信作為連接世界的橋梁,成為計(jì)算機(jī)科學(xué)領(lǐng)域中至關(guān)重要的一部分。理解網(wǎng)絡(luò)編程是每一位程序員必備的技能之一,而掌握套接字編程則

    2024年02月04日
    瀏覽(103)
  • 【網(wǎng)絡(luò)通信】socket編程——TCP套接字

    【網(wǎng)絡(luò)通信】socket編程——TCP套接字

    TCP依舊使用代碼來熟悉對應(yīng)的套接字,很多接口都是在udp中使用過的 所以就不會單獨(dú)把他們拿出來作為標(biāo)題了,只會把第一次出現(xiàn)的接口作為標(biāo)題 通過TCP的套接字 ,來把數(shù)據(jù)交付給對方的應(yīng)用層,完成雙方進(jìn)程的通信 在 tcpServer.hpp 中,創(chuàng)建一個(gè)命名空間 yzq 用于封裝 在命名

    2024年02月13日
    瀏覽(102)
  • 【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字

    【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字

    用戶在瀏覽器中,打開在線視頻網(wǎng)站,如騰訊看視頻,實(shí)質(zhì)是通過網(wǎng)絡(luò),獲取到網(wǎng)絡(luò)上的一個(gè)視頻資源。 與本地打開視頻文件類似,只是視頻文件這個(gè)資源的來源是 網(wǎng)絡(luò) 。 相比本地資源來說,網(wǎng)絡(luò)提供了更為豐富的網(wǎng)絡(luò)資源: 所謂的網(wǎng)絡(luò)資源,其實(shí)就是在網(wǎng)絡(luò)中可以獲取

    2024年02月05日
    瀏覽(97)
  • Linux網(wǎng)絡(luò)編程- 原始套接字(Raw Socket)

    原始套接字(Raw Socket)提供了一種機(jī)制,允許應(yīng)用程序直接訪問底層傳輸協(xié)議,繞過操作系統(tǒng)提供的傳輸層接口。這種套接字通常用于實(shí)現(xiàn)新的協(xié)議或?qū)ΜF(xiàn)有協(xié)議進(jìn)行低級別的操作。 以下是對原始套接字的詳細(xì)介紹: 定義與用途 : 原始套接字是直接基于網(wǎng)絡(luò)層(如IP)的。

    2024年02月07日
    瀏覽(97)
  • 【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程概念,socket套接字,基于UDP和TCP的網(wǎng)絡(luò)編程

    【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程概念,socket套接字,基于UDP和TCP的網(wǎng)絡(luò)編程

    前言: 大家好,我是 良辰丫 ,今天我們一起來學(xué)習(xí)網(wǎng)絡(luò)編程,網(wǎng)絡(luò)編程的基本概念,認(rèn)識套接字,UDP與TCP編程.?????? ??個(gè)人主頁:良辰針不戳 ??所屬專欄:javaEE初階 ??勵(lì)志語句:生活也許會讓我們遍體鱗傷,但最終這些傷口會成為我們一輩子的財(cái)富。 ??期待大家三連,關(guān)注

    2023年04月20日
    瀏覽(85)
  • 網(wǎng)絡(luò)編程day1——進(jìn)程間通信-socket套接字

    ????????基本特征:socket是一種接口技術(shù),被抽象了一種文件操作,可以讓同一計(jì)算機(jī)中的不同進(jìn)程之間通信,也可以讓不同計(jì)算機(jī)中的進(jìn)程之間通信(網(wǎng)絡(luò)通信) ? ? ? ? 進(jìn)程A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????? 進(jìn)程B ? ? 創(chuàng)建socket對象

    2024年02月10日
    瀏覽(106)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包