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

Java網(wǎng)絡(luò)編程——UDP

這篇具有很好參考價值的文章主要介紹了Java網(wǎng)絡(luò)編程——UDP。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

UDP網(wǎng)絡(luò)通信編程

基本介紹

UDP編程的基本流程

應(yīng)用實例

本章習(xí)題

第一題

服務(wù)端

客戶端

第二題

服務(wù)端

客戶端


UDP網(wǎng)絡(luò)通信編程

基本介紹

UDP(User Datagram Protocol)是一種無連接的傳輸協(xié)議,不保證傳輸數(shù)據(jù)的可靠性。在網(wǎng)絡(luò)通信中,UDP常用于那些對實時性要求較高、可靠性要求較低的應(yīng)用程序,比如音視頻傳輸?shù)取?/p>

1.類 DatagramSocket 和 DatagramPacket[數(shù)據(jù)包/數(shù)據(jù)報] 實現(xiàn)了基于 UDP協(xié)議網(wǎng)絡(luò)程序

2.UDP數(shù)據(jù)報通過數(shù)據(jù)報套接字 DatagramSocket 發(fā)送和接收,系統(tǒng)不保證UDP數(shù)據(jù)報一定能夠安全送到目的地,也不能確定什么時候可以抵達

3.DatagramPacket 對象封裝了UDP數(shù)據(jù)報,在數(shù)據(jù)報中包含了發(fā)送端的IP地址和端口號以及接收端的IP地址和端口號

4.UDP協(xié)議中每個數(shù)據(jù)報都給出了完整的地址信息,因此無須建立發(fā)送方和接收方的連接

在Java中,進行UDP網(wǎng)絡(luò)通信可以使用Java自帶的java.net包中的DatagramSocket和DatagramPacket類。

  1. DatagramSocket類

DatagramSocket類是實現(xiàn)基于UDP協(xié)議的網(wǎng)絡(luò)通信的基礎(chǔ)。該類提供的方法包括:

  • DatagramSocket(int port):創(chuàng)建一個DatagramSocket對象,并綁定到指定端口號。
  • void send(DatagramPacket p):將數(shù)據(jù)報發(fā)送到指定的主機和端口。
  • void receive(DatagramPacket p):等待接收數(shù)據(jù)報。
  • void setSoTimeout(int timeout):設(shè)置socket的超時時間。
  1. DatagramPacket類

DatagramPacket類代表著數(shù)據(jù)報包,包含了要發(fā)送或接收的數(shù)據(jù)、數(shù)據(jù)的長度以及發(fā)送或接收方的IP地址和端口號等信息。該類提供的方法包括:

  • DatagramPacket(byte[] buf, int length):創(chuàng)建一個DatagramPacket對象,用于接收數(shù)據(jù)報。
  • DatagramPacket(byte[] buf, int length, InetAddress address, int port):創(chuàng)建一個DatagramPacket對象,用于發(fā)送數(shù)據(jù)報。
  • byte[] getData():獲取數(shù)據(jù)報的數(shù)據(jù)。
  • InetAddress getAddress():獲取發(fā)送或接收方的IP地址。
  • int getPort():獲取發(fā)送或接收方的端口號。

UDP編程的基本流程

1.核心的兩個類/對象 DatagramSocket與DatagramPacket·

2.建立發(fā)送端,接收端(沒有服務(wù)端和客戶端概念)

3.發(fā)送數(shù)據(jù)前,建立數(shù)據(jù)包/報 DatagramPacket對象

4.調(diào)用DatagramSocket的發(fā)送、接收方法

5.關(guān)閉DatagramSocket

應(yīng)用實例

代碼演示:

首先我們先?創(chuàng)建 DatagramSocket 對象,準(zhǔn)備在8887端口 接收數(shù)據(jù)

第二步將需要發(fā)送的數(shù)據(jù),封裝到 DatagramPacket對象,主要要把發(fā)送的內(nèi)容轉(zhuǎn)換成字節(jié)數(shù)組

這里要注意一下?封裝的 DatagramPacket對象 bytes 內(nèi)容字節(jié)數(shù)組 , bytes.length , 主機(IP) , 端口

然后?構(gòu)建一個 DatagramPacket 對象,準(zhǔn)備接收數(shù)據(jù)?因為UDP 協(xié)議時一個數(shù)據(jù)包最大 64k

package com.homework;

/*
(1)編寫一個接收端A,和一個發(fā)送端B, 使用UDP協(xié)議完成
(2) 接收端在 8888端口等待接收數(shù)據(jù)(receive)
(3)發(fā)送端向接收端 發(fā)送 數(shù)據(jù)“四大名著是哪些"
(4)接收端接收到 發(fā)送端發(fā)送的 問題后,返回“四大名著是<<紅樓夢>> ...”,否則返回what?
(5)接收端和發(fā)送端程序退出
 */

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
 * 發(fā)送端B ====> 也可以接收數(shù)據(jù)
 */
public class Homework02SenderB {
    public static void main(String[] args) throws IOException {

        //1.創(chuàng)建 DatagramSocket 對象,準(zhǔn)備在8887端口 接收數(shù)據(jù)
        DatagramSocket socket = new DatagramSocket(8887);

        //2. 將需要發(fā)送的數(shù)據(jù),封裝到 DatagramPacket對象
        System.out.println("請輸入你的問題: ");
        Scanner scanner = new Scanner(System.in);
        String question = scanner.next();
        byte[] bytes = question.getBytes();//把要發(fā)送的內(nèi)容轉(zhuǎn)成字節(jié)數(shù)組
        //說明: 封裝的 DatagramPacket對象 bytes 內(nèi)容字節(jié)數(shù)組 , bytes.length , 主機(IP) , 端口
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.55.57"), 8888);
        socket.send(datagramPacket);//發(fā)送

        //3.=== 接收從A端回復(fù)的信息
        //(1)   構(gòu)建一個 DatagramPacket 對象,準(zhǔn)備接收數(shù)據(jù)
        //   在前面講解UDP 協(xié)議時,說過一個數(shù)據(jù)包最大 64k
        byte[] bytes1 = new byte[1024];
        datagramPacket = new DatagramPacket(bytes1, bytes1.length);
        //(2)    調(diào)用 接收方法, 將通過網(wǎng)絡(luò)傳輸?shù)?DatagramPacket 對象
        //   填充到 datagramPacket對象
        // 當(dāng)有數(shù)據(jù)包發(fā)送到 本機的8887端口時,就會接收到數(shù)據(jù)
        //   如果沒有數(shù)據(jù)包發(fā)送到 本機的8887端口, 就會阻塞等待.
        socket.receive(datagramPacket);

        //(3)  可以把datagramPacket 進行拆包,取出數(shù)據(jù),并顯示.
        int length = datagramPacket.getLength();//實際接收到的數(shù)據(jù)字節(jié)長度
        byte[] data = datagramPacket.getData();//接收到數(shù)據(jù)
        String s = new String(data, 0, length);//構(gòu)建一個字符串
        System.out.println("接收到9999端口發(fā)來的信息");
        System.out.println(s);

        //關(guān)閉資源
        socket.close();
        System.out.println("B端退出");

    }
}
package com.homework;
/*
(1)編寫一個接收端A,和一個發(fā)送端B, 使用UDP協(xié)議完成
(2) 接收端在 8888端口等待接收數(shù)據(jù)(receive)
(3)發(fā)送端向接收端 發(fā)送 數(shù)據(jù)“四大名著是哪些"
(4)接收端接收到 發(fā)送端發(fā)送的 問題后,返回“四大名著是<<紅樓夢>> ...”,否則返回what?
(5)接收端和發(fā)送端程序退出
 */

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * UDP接收端
 */
public class Homework02ReceiverA {
    public static void main(String[] args) throws IOException {
        //1. 創(chuàng)建一個 DatagramSocket 對象,準(zhǔn)備在8888接收數(shù)據(jù)
        DatagramSocket socket = new DatagramSocket(8888);
        //2. 構(gòu)建一個 DatagramPacket 對象,準(zhǔn)備接收數(shù)據(jù)
        //   在前面講解UDP 協(xié)議時,說過一個數(shù)據(jù)包最大 64k
        byte[] bytes = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
        //3. 調(diào)用 接收方法, 將通過網(wǎng)絡(luò)傳輸?shù)?DatagramPacket 對象
        //   填充到    datagramPacket對象
        //當(dāng)有數(shù)據(jù)包發(fā)送到 本機的8888端口時,就會接收到數(shù)據(jù)
        //   如果沒有數(shù)據(jù)包發(fā)送到 本機的8888端口, 就會阻塞等待.
        System.out.println("接收端A 等待接收數(shù)據(jù)..");
        socket.receive(datagramPacket);

        //4. 可以把datagramPacket 進行拆包,取出數(shù)據(jù),并顯示
        int length = datagramPacket.getLength();//實際接收到的數(shù)據(jù)字節(jié)長度
        byte[] data = datagramPacket.getData();//接收到數(shù)據(jù)
        String s = new String(data, 0, length);//構(gòu)建一個字符串
        String s2 = "";//定義輔助變量
        if (s.equals("四大名著是那些")) {
            s2 = "四大名著 <<紅樓夢>> <<三國演示>> <<西游記>> <<水滸傳>>";
        } else {
            s2 = "what?";
        }

        //===回復(fù)信息給B端
        //將需要發(fā)送的數(shù)據(jù),存放到bytes數(shù)組中
        bytes = s2.getBytes();
        //說明: 封裝的 DatagramPacket對象 bytes 內(nèi)容字節(jié)數(shù)組 , bytes.length , 主機(IP) , 端口
        datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.55.57"), 8887);
        socket.send(datagramPacket);//發(fā)送

        //5. 關(guān)閉資源
        socket.close();
        System.out.println("A端退出...");


    }
}

本章習(xí)題

第一題

代碼演示:

要求:

(1)使用字符流的方式,編寫一個客戶端程序和服務(wù)器端程序,
(2)客戶端發(fā)送“name”,服務(wù)器端接收到后,返回“我是 nova",nova 是你自己的名字
(3)客戶端發(fā)送“hobby”,服務(wù)器端接收到后,返回“編java程序”
(4)不是這兩個問題,回復(fù)“你說啥呢!

服務(wù)端代碼

package com.homework;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/*
(1)使用字符流的方式,編寫一個客戶端程序和服務(wù)器端程序,
(2)客戶端發(fā)送“name”,服務(wù)器端接收到后,返回“我是 nova",nova 是你自己的名字
(3)客戶端發(fā)送“hobby”,服務(wù)器端接收到后,返回“編java程序”
(4)不是這兩個問題,回復(fù)“你說啥呢!
 */

/**
 * 服務(wù)端, 使用字符流方式讀寫
 */
public class Homework01Server {
    public static void main(String[] args) throws IOException {
        //思路
        //1. 在本機 的9999端口監(jiān)聽, 等待連接
        //   細(xì)節(jié): 要求在本機沒有其它服務(wù)在監(jiān)聽9999
        //   細(xì)節(jié):這個 ServerSocket 可以通過 accept() 返回多個Socket[多個客戶端連接服務(wù)器的并發(fā)]
        ServerSocket serverSocket = new ServerSocket(9999);
        System.out.println("服務(wù)端,在9999端口監(jiān)聽,等待連接..");

        //2. 當(dāng)沒有客戶端連接9999端口時,程序會 阻塞, 等待連接
        //   如果有客戶端連接,則會返回Socket對象,程序繼續(xù)
        Socket socket = serverSocket.accept();
        System.out.println("連接成功");

        //3. 獲取socket相關(guān)聯(lián)的輸入流
        InputStream inputStream = socket.getInputStream();
        //4. IO讀取, 使用字符流, 老師使用 InputStreamReader 將 inputStream 轉(zhuǎn)成字符流
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String s = bufferedReader.readLine();//把讀取到的內(nèi)容存放到變量s中
        String answer = "";//定義輔助變量
        //對s進行判斷,返回不同的值
        if (s.equals("name")) {
            answer = "我是nova";
        } else if (s.equals("hobby")) {
            answer = "編寫Java程序";
        } else {
            answer = "你說啥呢";
        }

        //5. 獲取socket相關(guān)聯(lián)的輸出流
        OutputStream outputStream = socket.getOutputStream();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        bufferedWriter.write(answer);//根據(jù)s的值返回不同的信息
        bufferedWriter.flush();// 如果使用的字符流,需要手動刷新,否則數(shù)據(jù)不會寫入數(shù)據(jù)通道
        socket.shutdownOutput();//設(shè)置結(jié)束標(biāo)記

        //6.關(guān)閉流
        bufferedWriter.close();
        bufferedReader.close();
        socket.close();
        serverSocket.close();//關(guān)閉

    }
}

客戶端代碼

package com.homework;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

/*
(1)使用字符流的方式,編寫一個客戶端程序和服務(wù)器端程序,
(2)客戶端發(fā)送“name”,服務(wù)器端接收到后,返回“我是 nova",nova 是你自己的名字
(3)客戶端發(fā)送“hobby”,服務(wù)器端接收到后,返回“編java程序”
(4)不是這兩個問題,回復(fù)“你說啥呢!
 */

/**
 * 客戶端,發(fā)送 信息 給服務(wù)端, 使用字符流
 */
public class Homework01Client {
    public static void main(String[] args) throws IOException {
        //思路
        //1. 連接服務(wù)端 (ip , 端口)
        //解讀: 連接本機的 9999端口, 如果連接成功,返回Socket對象
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        //2. 連接上后,生成Socket, 通過socket.getOutputStream()
        //   得到 和 socket對象關(guān)聯(lián)的輸出流對象
        OutputStream outputStream = socket.getOutputStream();

        //3. 通過輸出流,寫入數(shù)據(jù)到 數(shù)據(jù)通道, 使用字符流
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入內(nèi)容");
        String s1 = scanner.next();
        bufferedWriter.write(s1);//創(chuàng)建一個scanner把我們輸入的內(nèi)容寫入到數(shù)據(jù)通道中
        bufferedWriter.newLine();//插入一個換行符,表示寫入的內(nèi)容結(jié)束, 注意,要求對方使用readLine()!!!!
        bufferedWriter.flush();// 如果使用的字符流,需要手動刷新,否則數(shù)據(jù)不會寫入數(shù)據(jù)通道

        //4. 獲取和socket關(guān)聯(lián)的輸入流. 讀取數(shù)據(jù)(字符),并顯示
        InputStream inputStream = socket.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        System.out.println("接收到服務(wù)端發(fā)來的信息");
        String s = bufferedReader.readLine();//讀取數(shù)據(jù)通道中的內(nèi)容并輸出
        System.out.println(s);


        //5.關(guān)閉流
        bufferedReader.close();
        bufferedWriter.close();
        socket.close();

    }
}

第二題

代碼演示:

要求:

(1)編寫客戶端程序和服務(wù)器端程序
(2) 客戶端可以輸入 一個 音樂 文件名,比如 高山流水,服務(wù)端 收到音樂名后,可以給客戶端 返回這個 音樂文件,如果服務(wù)器沒有這個文件,返回 一個默認(rèn)的音樂即可。
(3) 客戶端收到文件后,保存到本地 e:
(4)提示: 該程序可以使用 StreamUtils.java文章來源地址http://www.zghlxwxcb.cn/news/detail-459958.html

服務(wù)端代碼

package com.homework;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/*
(1)編寫客戶端程序和服務(wù)器端程序
(2) 客戶端可以輸入 一個 音樂 文件名,比如 高山流水,服務(wù)端 收到音樂名后,可以給客戶端 返回這個 音樂文件,如果服務(wù)器沒有這個文件,返回 一個默認(rèn)的音樂即可。
(3) 客戶端收到文件后,保存到本地 e:
(4)提示: 該程序可以使用 StreamUtils.java
 */
public class Homework03Server {
    public static void main(String[] args) throws Exception {
        //1 在 9999端口監(jiān)聽
        ServerSocket serverSocket = new ServerSocket(9999);
        //2.等待客戶端連接
        System.out.println("服務(wù)端在9999端口等待連接");
        Socket socket = serverSocket.accept();
        System.out.println("連接成功");

        //讀取到客戶端發(fā)來要下載的文件名
        InputStream inputStream = socket.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String s = bufferedReader.readLine();
        //也可以使用while循化的方式讀取文件名
        /*
            InputStream inputStream = socket.getInputStream();
            byte[] b = new byte[1024];
            int len = 0;
            String downLoadFileName = "";
            while ((len = inputStream.read(b)) != -1) {
                downLoadFileName += new String(b, 0 , len);
            }
            System.out.println("客戶端希望下載文件名=" + downLoadFileName);
         */


        //在服務(wù)器上有兩個文件, 無名.mp3 高山流水.mp3
        //如果客戶下載的是 高山流水 我們就返回該文件,否則一律返回 無名.mp3
        //根據(jù)用戶發(fā)來的信息進行判斷
        String resFile = "";
        if (s.equals("src\\高山流水.mp3")) {
            resFile = "src\\高山流水.mp3";
        } else {
            resFile = "src\\無名.mp3";
        }
        //根據(jù)客戶端發(fā)來的信息讀取文件  因為讀取的是音樂要使用字節(jié)流不可以使用字符流,否則可能造成數(shù)據(jù)的丟失
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(resFile));
        //使用工具類把讀到的文件轉(zhuǎn)成一個字節(jié)數(shù)組
        byte[] bytes = StreamUtils.streamToByteArray(bis);

        //把字節(jié)數(shù)組發(fā)送到數(shù)據(jù)通道
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        bos.write(bytes);
        bos.flush();
        socket.shutdownOutput();//設(shè)置結(jié)束標(biāo)記就

        //關(guān)閉流
        bis.close();
        bos.close();
        inputStream.close();
        socket.close();
        serverSocket.close();
        System.out.println("服務(wù)端退出...");

    }
}

客戶端代碼

package com.homework;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

/*
(1)編寫客戶端程序和服務(wù)器端程序
(2) 客戶端可以輸入 一個 音樂 文件名,比如 高山流水,服務(wù)端 收到音樂名后,可以給客戶端 返回這個 音樂文件,如果服務(wù)器沒有這個文件,返回 一個默認(rèn)的音樂即可。
(3) 客戶端收到文件后,保存到本地 e:
(4)提示: 該程序可以使用 StreamUtils.java
 */
public class Homework03Client {
    public static void main(String[] args) throws Exception {
        //客戶端連接服務(wù)端,準(zhǔn)備發(fā)送
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);

        // 獲取和Socket關(guān)聯(lián)的輸出流
        OutputStream outputStream = socket.getOutputStream();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        // 接收用戶輸入,指定下載文件名
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入要下載的音樂名");
        String next = scanner.next();
        bufferedWriter.write(next);//把要下載的文件名發(fā)送到服務(wù)端
        bufferedWriter.flush();
        //設(shè)置寫入結(jié)束的標(biāo)志
        socket.shutdownOutput();

        String filePath = "e:\\" + next + ".mp3";
        InputStream inputStream = socket.getInputStream();
        //從數(shù)據(jù)通道中讀取讀取服務(wù)端返回的文件(字節(jié)數(shù)據(jù))
        BufferedInputStream bis = new BufferedInputStream(inputStream);
        //使用工具類轉(zhuǎn)成一個字節(jié)數(shù)組
        byte[] bytes = StreamUtils.streamToByteArray(bis);

        // 得到一個字節(jié)輸出流,準(zhǔn)備將 bytes 寫入到磁盤文件
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
        bos.write(bytes);
        bos.flush();

        //關(guān)閉流
        bis.close();
        bos.close();
        bufferedWriter.close();
        socket.close();
        System.out.println("客戶端下載完畢,正確退出..");


    }
}

到了這里,關(guān)于Java網(wǎng)絡(luò)編程——UDP的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【QT網(wǎng)絡(luò)編程】實現(xiàn)UDP協(xié)議通信

    【QT網(wǎng)絡(luò)編程】實現(xiàn)UDP協(xié)議通信

    Internet 協(xié)議集支持一個無連接的傳輸協(xié)議,該協(xié)議稱為用戶數(shù)據(jù)報協(xié)議(UDP,User Datagram Protocol)。UDP 為應(yīng)用程序提供了 一種無需建立連接就可以發(fā)送封裝的 IP 數(shù)據(jù)包的方法 。RFC 768 描述了 UDP。 UDP協(xié)議根據(jù)消息傳送模式可以分為: 單播(Unicast)、組播(Multicast)和廣播(

    2024年02月02日
    瀏覽(26)
  • 基于UDP/TCP的網(wǎng)絡(luò)通信編程實現(xiàn)

    基于UDP/TCP的網(wǎng)絡(luò)通信編程實現(xiàn)

    紅色是心中永不褪色的赤誠 操作系統(tǒng)為網(wǎng)絡(luò)編程提供了 Socket api , Socket是基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本單元, 基于Socket的網(wǎng)絡(luò)程序開發(fā)就是 網(wǎng)絡(luò)編程. 由于直接與應(yīng)用層聯(lián)系的是傳輸層, 所以針對應(yīng)用層協(xié)議(TCP, UDP), Shocket提供了三種套接字, 分別是 流套接字(使用TCP) , 數(shù)據(jù)報

    2024年02月08日
    瀏覽(33)
  • 【網(wǎng)絡(luò)編程】利用套接字實現(xiàn)一個簡單的網(wǎng)絡(luò)通信(UDP實現(xiàn)聊天室 附上源碼)

    【網(wǎng)絡(luò)編程】利用套接字實現(xiàn)一個簡單的網(wǎng)絡(luò)通信(UDP實現(xiàn)聊天室 附上源碼)

    源IP地址(Source IP Address): 源IP地址是數(shù)據(jù)包發(fā)送方(或數(shù)據(jù)流出發(fā)點)的唯一標(biāo)識符。它用于在互聯(lián)網(wǎng)或本地網(wǎng)絡(luò)中定位發(fā)送數(shù)據(jù)包的設(shè)備或主機。源IP地址是數(shù)據(jù)包的出發(fā)點,即數(shù)據(jù)從這個地址開始傳送,向目的IP地址指示的設(shè)備發(fā)送。 在TCP/IP協(xié)議中,源IP地址通常由發(fā)

    2024年02月14日
    瀏覽(26)
  • Java網(wǎng)絡(luò)編程 - 網(wǎng)絡(luò)編程介紹 - 網(wǎng)絡(luò)通信三要素

    Java網(wǎng)絡(luò)編程 - 網(wǎng)絡(luò)編程介紹 - 網(wǎng)絡(luò)通信三要素

    什么是網(wǎng)絡(luò)編程 ? 網(wǎng)絡(luò)編程可以讓程序與網(wǎng)絡(luò)上的其他設(shè)備中的程序進行數(shù)據(jù)交互。 網(wǎng)絡(luò)編程基本模式 : 常見的通信模式有如下2種形式:Client-Server( CS: 客戶端與服務(wù)器模式 ) 、 Browser/Server( BS: 瀏覽器與服務(wù)器模式 ) Client-Server(CS)模式 Browser/Server(BS)模式 實現(xiàn)網(wǎng)絡(luò)編程關(guān)鍵的三

    2024年02月02日
    瀏覽(36)
  • Java 網(wǎng)絡(luò)編程 —— 安全網(wǎng)絡(luò)通信

    SSL(Secure Socket Layer,安全套接字層)是一種保證網(wǎng)絡(luò)上的兩個節(jié)點進行安全通信的協(xié)議。IETF(Interet Engineering Task Force)國際組織對 SSL 作了標(biāo)準(zhǔn)化,制定了 RFC2246 規(guī)范,并將其稱為傳輸層安全(Transport Layer Security,TLS) SSL 和 TLS 都建立在 TCP/IP 的基礎(chǔ)上,一些應(yīng)用層協(xié)議,如

    2024年02月11日
    瀏覽(27)
  • Java 網(wǎng)絡(luò)編程詳解:實現(xiàn)網(wǎng)絡(luò)通信的核心技術(shù)

    網(wǎng)絡(luò)編程是指利用計算機網(wǎng)絡(luò)進行數(shù)據(jù)交換和通信的過程。它涉及到在不同主機之間傳輸數(shù)據(jù),并允許不同設(shè)備之間進行連接和通信。網(wǎng)絡(luò)編程不僅限于互聯(lián)網(wǎng),也可以包括局域網(wǎng)或廣域網(wǎng)等各種網(wǎng)絡(luò)環(huán)境。 在當(dāng)今的互聯(lián)網(wǎng)時代,幾乎所有的應(yīng)用都需要在不同設(shè)備之間進行數(shù)

    2024年02月11日
    瀏覽(20)
  • 【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信

    【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信

    TCP協(xié)議(Transmission Control Protocol),即傳輸控制協(xié)議,是一種 面向連接 的, 可靠 的,基于 字節(jié)流 的傳輸層通信協(xié)議。數(shù)據(jù)大小無限制。 建立連接的過程需要 三次握手 。 斷開連接的過程需要 四次揮手 。 使用TCP協(xié)議的通信雙方分別為 客戶端 和 服務(wù)器端 。 客戶端負(fù)責(zé)向服務(wù)

    2024年01月23日
    瀏覽(41)
  • Java網(wǎng)絡(luò)編程 - TCP通信

    Java網(wǎng)絡(luò)編程 - TCP通信

    快速入門(一發(fā)一收) TCP協(xié)議回顧 : TCP是一種面向連接,安全、可靠的傳輸數(shù)據(jù)的協(xié)議 傳輸前,采用“三次握手”方式,點對點通信,是可靠的 在連接中可進行大數(shù)據(jù)量的傳輸 TCP通信模式 : 在java中只要是使用java.net.Socket類實現(xiàn)通信,底層即是使用了TCP協(xié)議 編寫客戶端代碼

    2024年01月19日
    瀏覽(27)
  • Java網(wǎng)絡(luò)編程-Socket實現(xiàn)數(shù)據(jù)通信

    Java網(wǎng)絡(luò)編程-Socket實現(xiàn)數(shù)據(jù)通信

    本文主要是為下一篇Websockt做鋪墊,大家了解socket的一些實現(xiàn)。 網(wǎng)絡(luò)編程是指利用計算機網(wǎng)絡(luò)進行程序設(shè)計、開發(fā)的技術(shù)。網(wǎng)絡(luò)編程主要包含三個要素,分別是: IP地址和端口號 傳輸協(xié)議 Socket 在計算機網(wǎng)絡(luò)中,每臺計算機都有一個IP地址,用于唯一標(biāo)識該計算機在網(wǎng)絡(luò)中的

    2024年02月10日
    瀏覽(35)
  • 網(wǎng)絡(luò)編程-Socket通信實現(xiàn)服務(wù)器與客戶端互傳文件(JAVA語言實現(xiàn))

    網(wǎng)絡(luò)編程-Socket通信實現(xiàn)服務(wù)器與客戶端互傳文件(JAVA語言實現(xiàn))

    在網(wǎng)絡(luò)通信協(xié)議下,實現(xiàn)網(wǎng)絡(luò)互連的不同計算機上運行的程序間可以進行數(shù)據(jù)交換. 網(wǎng)絡(luò)編程三要素:ip地址、端口、協(xié)議 ip地址: 每臺計算機指定的一個標(biāo)識符,127.0.0.1是回送地址,可以代表本機地址 ,一般用來測試使用 ipconfig:命令行中查看本機地址 ping ip地址:檢查網(wǎng)絡(luò)是

    2023年04月14日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包