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

Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*

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

網(wǎng)絡(luò)編程

什么是計(jì)算機(jī)網(wǎng)絡(luò)?

  • 把分布在不同地理區(qū)域的具有獨(dú)立功能的計(jì)算機(jī),通過通信設(shè)備與線路連接起來,由功能完善的軟件實(shí)現(xiàn)資源共享和信息傳遞的系統(tǒng)

簡單來說就是把不同地區(qū)的計(jì)算機(jī)通過設(shè)備連接起來,實(shí)現(xiàn)不同地區(qū)之前的數(shù)據(jù)傳輸

網(wǎng)絡(luò)編程是干什么的?

  • 網(wǎng)絡(luò)編程是借助計(jì)算機(jī)網(wǎng)絡(luò),實(shí)現(xiàn)我們所寫的程序,在不同電腦上,可進(jìn)行數(shù)據(jù)的傳輸

  • java是支持網(wǎng)絡(luò)間的數(shù)據(jù)傳輸?shù)?降低層細(xì)節(jié)封裝起來了,給程序員提供了一套標(biāo)準(zhǔn)的類庫很方便使用java語言開發(fā)可以進(jìn)行網(wǎng)絡(luò)通信的軟件

  • 網(wǎng)絡(luò)編程的核心問題

    • ? 如何找到網(wǎng)絡(luò)世界中的惡目標(biāo)主機(jī),以及目標(biāo)軟件

    • ? 在終端 使用 ipconfig 指令查看ip

    • ? 如何安全可靠的進(jìn)行數(shù)據(jù)傳輸 協(xié)議 規(guī)則

網(wǎng)絡(luò)的一些基本知識(shí)

  • 網(wǎng)絡(luò)模型
  • ? OSI參考模型 是一個(gè)理想化的標(biāo)準(zhǔn)模型
    • ? 分成七層
  • ? TCP/IP參考模型
    • ? 分成四層
    • ? 應(yīng)用層(http)
    • ? 運(yùn)輸層(協(xié)議)
    • ? 網(wǎng)絡(luò)層(ip)
    • ? 物理鏈路層(硬件設(shè)備)

如下:

Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*,java,網(wǎng)絡(luò),java,tcp/ip

Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*,java,網(wǎng)絡(luò),java,tcp/ip

  • 通信要素 ip 端口 協(xié)議
    • IP:在網(wǎng)絡(luò)世界中,是計(jì)算機(jī)的地址
    • ? 局域網(wǎng)地址: 192.168.1.20 連接到路由器,會(huì)自動(dòng)分配IP
    • ? 廣域網(wǎng)地址: 家里的寬帶 與外界連接
    • ? 本機(jī)地址: 本地回環(huán)地址 127.0.0.1
    • 端口:計(jì)算機(jī)中運(yùn)行中的程序的編號(hào),對應(yīng)的是程序
      • 端口號(hào)0-65535之間 由于0-1024被一些系統(tǒng)程序使用,所以我們開發(fā)的程序可以從
        1024-655335區(qū)設(shè)定端口,但是不能與已有的發(fā)生沖突
    • ip+端口 找到目標(biāo)計(jì)算機(jī) 以及你想要的程序

Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*,java,網(wǎng)絡(luò),java,tcp/ip

如何進(jìn)行安全信息傳輸–傳輸協(xié)議

  • Java中分為兩種編程協(xié)議
    • TCP
    • UDP
TCP協(xié)議通信原理

先檢測網(wǎng)絡(luò)是否通暢,客戶端是否能連接到服務(wù)器端
如果能連接到,則進(jìn)行數(shù)據(jù)的傳輸,如果連接不到,就會(huì)報(bào)錯(cuò)
采用3次握手的機(jī)制 (連接請求)
1.第一次客戶端給服務(wù)器發(fā)送一個(gè)信息
2.服務(wù)器收到客戶端的請求后,需要給客戶端做出一個(gè)反饋(表示服務(wù)器端收到客戶端消息)
3.客戶端收到服務(wù)器端確認(rèn)反饋后,再一次向服務(wù)器發(fā)送一個(gè)反饋,以確保服務(wù)器知道他的
反饋,客戶端是收到 (表示客戶端成功收到服務(wù)器端消息)

? TCP是可靠的安全的,相對于UDP效率低

Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*,java,網(wǎng)絡(luò),java,tcp/ip

四次揮手(端來請求)

  • 1.客戶端 向服務(wù)器端發(fā)送一個(gè)斷開請求
  • 2.服務(wù)器端 向客服發(fā)出一個(gè)反饋
  • 3.服務(wù)器端把沒有發(fā)完的數(shù)據(jù)全部發(fā)送
  • 4.客戶端再向服務(wù)器端發(fā)送最終斷開的信號(hào)

Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*,java,網(wǎng)絡(luò),java,tcp/ip

UDP協(xié)議通信原理
  • ? 將數(shù)據(jù)分裝成一個(gè)一個(gè)數(shù)據(jù)報(bào)
  • ? 包含 數(shù)據(jù) 源(自己電腦ip) 目標(biāo)(接受ip 端口)
  • ? 只管發(fā)送 是否成功,不知道
  • ? 是不安全的,但是效率高

? 不用建立連接,直接發(fā)送

Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*,java,網(wǎng)絡(luò),java,tcp/ip

TCP編程

服務(wù)端

ServerSocket常用的方法

  • Socket accept() throws IOException
    • 等待客戶端的連接請求,返回與該客戶端進(jìn)行通信的Socket對象
  • void close() throws IOException
    • 關(guān)閉監(jiān)聽Socket
package day15;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/*
服務(wù)器端
 */
public class Server {
    public static void main(String[] args) {
        //創(chuàng)建并啟動(dòng)服務(wù)器
        try{
            ServerSocket serverSocket = new ServerSocket(9999);
            System.out.println("服務(wù)器啟動(dòng)成功");

            while(true) {
                Socket socket = serverSocket.accept();//監(jiān)聽有沒有客戶端連接到服務(wù)器,監(jiān)聽時(shí),會(huì)阻塞程序
                System.out.println("有傻逼端連接到服務(wù)器");
                //接收客戶端發(fā)送的數(shù)據(jù)
                InputStream inputStream = socket.getInputStream();
                //下面過于復(fù)雜,可以調(diào)用DataInputStream  但是必須對應(yīng)DataOutputStream
//                byte[] bytes = new byte[100];
//                int size = inputStream.read(bytes);
//                String s = new String(bytes, 0, size);
//                System.out.println(s);
                DataInputStream dataInputStream = new DataInputStream(inputStream);
                String s= dataInputStream.readUTF();
                System.out.println(s);


                //服務(wù)器向客戶端發(fā)送消息
                OutputStream outputStream =socket.getOutputStream();
                DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
                dataOutputStream.writeUTF("已經(jīng)收到");

                // 確保數(shù)據(jù)被發(fā)送出去,并釋放資源
                dataOutputStream.flush();
                dataOutputStream.close();
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("服務(wù)器啟動(dòng)失敗,端口被占用");
        }
    }
}

客戶端

常用方法

  • void close() throws IOException
    • 關(guān)閉Socket 不可以在以后得網(wǎng)絡(luò)連接中使用 除非創(chuàng)建新的套接字
  • InputStream getInputStream() throws IOException
    • 獲取與Socket相關(guān)聯(lián)的字節(jié)輸入流,用于從Socket中讀入數(shù)據(jù)
  • OutputStream getOutputStream() throws IOException
    • 獲取與Socket相關(guān)聯(lián)的字節(jié)輸出流 ,用于向Socket中寫入數(shù)據(jù)
package day15;
import java.io.*;
import java.net.Socket;
/*
客戶端
 */
public class Client {
    public static void main(String[] args)  {

        //創(chuàng)建客戶端
        //127.0.0.1自己地址
       try {

               //向服務(wù)器發(fā)送
               Socket socket = new Socket("127.0.0.1", 9999);
               //在客戶端向服務(wù)器端發(fā)送一句話
               OutputStream outputStream = socket.getOutputStream();//獲取輸出流
               DataOutputStream dataOutputStream =new DataOutputStream(outputStream);

               String s = "你好";
               dataOutputStream.writeUTF(s);

               //接受服務(wù)器
               InputStream inputStream = socket.getInputStream();
               DataInputStream dataInputStream = new DataInputStream(inputStream);
               System.out.println(dataInputStream.readUTF());


       } catch (IOException e) {
           e.printStackTrace();
           System.out.println("連接服務(wù)器失敗");
       }
    }
}

UDP編程

服務(wù)端

package day16;

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

public class UDPReceive {
    public static void main(String[] args) {
        try {
            while(true){
                //接受數(shù)據(jù)的對象
                DatagramSocket datagramSocket = new DatagramSocket(9999);

                byte[] bytes = new byte[100];
                //接受數(shù)據(jù)包
                DatagramPacket datagramPacket = new DatagramPacket(bytes,0, bytes.length);
                datagramSocket.receive(datagramPacket);
                String s = new String(bytes,0,datagramPacket.getLength());
                System.out.println(s);
                datagramSocket.close();
            }
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

客戶端

package day16;

import java.io.IOException;
import java.net.*;

//發(fā)送端
public class UDPSendDemo {

    public static void main(String[] args) {
        try {
            DatagramSocket datagramSocket = new DatagramSocket();//負(fù)責(zé)發(fā)送數(shù)據(jù)報(bào)
            byte[] bytes = "你好sb鄧欽文".getBytes();
            DatagramPacket datagramPacket = new DatagramPacket(bytes,0, bytes.length, InetAddress.getByName("127.0.0.1"),9999);

            //發(fā)送(datagramSocket方法)
            datagramSocket.send(datagramPacket);
            datagramSocket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

TCP 與 UDP的區(qū)別

TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)都是網(wǎng)絡(luò)傳輸層協(xié)議,用于在網(wǎng)絡(luò)中傳輸數(shù)據(jù)。它們之間的主要區(qū)別在于連接方式可靠性、數(shù)據(jù)流方式功能

  1. 連接方式
    • TCP是面向連接的協(xié)議,發(fā)送方和接收方在發(fā)送數(shù)據(jù)之前,必須通過三次握手建立連接。這個(gè)過程確保了雙方都已準(zhǔn)備好進(jìn)行數(shù)據(jù)傳輸。
    • UDP是無連接的協(xié)議,發(fā)送方在向接收方發(fā)送數(shù)據(jù)時(shí)不需要建立連接。這意味著UDP可以更快地發(fā)送數(shù)據(jù),但也可能導(dǎo)致數(shù)據(jù)的丟失或亂序。
  2. 可靠性
    • TCP通過序號(hào)機(jī)制、確認(rèn)機(jī)制、超時(shí)重傳機(jī)制和數(shù)據(jù)校驗(yàn)來保證傳輸?shù)目煽啃?。如果?shù)據(jù)在傳輸過程中丟失或損壞,TCP會(huì)重新發(fā)送數(shù)據(jù),直到接收方成功接收為止。
    • UDP只添加了端口和差錯(cuò)檢查的功能,不提供數(shù)據(jù)的可靠性保證。因此,UDP在傳輸過程中可能會(huì)出現(xiàn)數(shù)據(jù)丟失或亂序的情況。
  3. 數(shù)據(jù)流方式
    • TCP是面向字節(jié)流的協(xié)議,將應(yīng)用層傳遞下來的數(shù)據(jù)當(dāng)做無結(jié)構(gòu)的數(shù)據(jù)流進(jìn)行處理。TCP不知道所傳數(shù)據(jù)的具體含義,只是將數(shù)據(jù)塊拼接成一個(gè)段進(jìn)行發(fā)送。
    • UDP是面向報(bào)文的協(xié)議,發(fā)送方的UDP對應(yīng)用程序交下來的報(bào)文添加首部后直接向下交付IP層。每個(gè)報(bào)文都是獨(dú)立發(fā)送的,不需要進(jìn)行拼接。
  4. 功能
    • TCP支持單播、多播和廣播的功能,可以實(shí)現(xiàn)一對一、一對多、多對多和多對一的數(shù)據(jù)傳輸。
    • UDP同樣支持這些傳輸方式,但由于其無連接的特性,使得UDP在實(shí)時(shí)性要求較高的場景中更為適用,如視頻流、音頻流等。

Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*,java,網(wǎng)絡(luò),java,tcp/ip文章來源地址http://www.zghlxwxcb.cn/news/detail-794393.html

到了這里,關(guān)于Java網(wǎng)絡(luò)編程 *TCP與UDP協(xié)議*的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(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)文章

  • 【Java基礎(chǔ)教程】(四十七)網(wǎng)絡(luò)編程篇:網(wǎng)絡(luò)通訊概念,TCP、UDP協(xié)議,Socket與ServerSocket類使用實(shí)踐與應(yīng)用場景~

    【Java基礎(chǔ)教程】(四十七)網(wǎng)絡(luò)編程篇:網(wǎng)絡(luò)通訊概念,TCP、UDP協(xié)議,Socket與ServerSocket類使用實(shí)踐與應(yīng)用場景~

    了解多線程與網(wǎng)絡(luò)編程的操作關(guān)系; 了解網(wǎng)絡(luò)程序開發(fā)的主要模式; 了解 TCP 程序的基本實(shí)現(xiàn); 在Java中,網(wǎng)絡(luò)編程的核心意義是實(shí)現(xiàn)不同電腦主機(jī)之間的數(shù)據(jù)交互。Java采用了一種簡化的概念,將這個(gè)過程進(jìn)一步抽象為JVM(Java虛擬機(jī))進(jìn)程之間的通信。可以在同一臺(tái)電腦上

    2024年02月15日
    瀏覽(98)
  • Java網(wǎng)絡(luò)編程(UDP、TCP)

    在網(wǎng)絡(luò)通信協(xié)議下,不同計(jì)算機(jī)上運(yùn)行的程序,進(jìn)行的數(shù)據(jù)傳輸。 應(yīng)用場景:即時(shí)通信、網(wǎng)游對戰(zhàn)、金融證券、國際貿(mào)易、郵件、等等。 不管是什么場景,都是計(jì)算機(jī)跟計(jì)算機(jī)之間通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸。 Java中可以使用java.net包下的技術(shù)輕松開發(fā)出常見的網(wǎng)絡(luò)應(yīng)用程序。

    2024年02月05日
    瀏覽(39)
  • 【Java學(xué)習(xí)筆記】 68 - 網(wǎng)絡(luò)——TCP編程、UDP編程

    【Java學(xué)習(xí)筆記】 68 - 網(wǎng)絡(luò)——TCP編程、UDP編程

    https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter21/src 目錄 項(xiàng)目代碼 網(wǎng)絡(luò) 一、網(wǎng)絡(luò)相關(guān)概念 1.網(wǎng)絡(luò)通訊 2.網(wǎng)絡(luò) 3.IP地址 4.域名 5.端口號(hào) 6.網(wǎng)絡(luò)通訊協(xié)議 TCP協(xié)議:傳輸控制協(xié)議 UDP協(xié)議: 二、InetAddress類 1.相關(guān)方法 三、Socket 1.基本介紹 2.TCP網(wǎng)絡(luò)通信編程 基本介紹 應(yīng)用案例

    2024年02月04日
    瀏覽(26)
  • 【Java 網(wǎng)絡(luò)編程】網(wǎng)絡(luò)通信原理、TCP、UDP 回顯服務(wù)

    【Java 網(wǎng)絡(luò)編程】網(wǎng)絡(luò)通信原理、TCP、UDP 回顯服務(wù)

    互聯(lián)網(wǎng)從何而來? 這要追溯到上個(gè)世紀(jì) 50 - 60 年代,當(dāng)時(shí)正逢美蘇爭霸冷戰(zhàn), 核武器 給戰(zhàn)爭雙方提供了足夠的威懾力,想要保全自己,就要保證自己的 反制手段 是有效的。 如何保證能夠反擊: 保存指揮機(jī)構(gòu) 保存核彈頭和發(fā)射井 指揮機(jī)構(gòu)和核彈頭之間的通信鏈路 需要保證

    2023年04月10日
    瀏覽(33)
  • Java-Java基礎(chǔ)學(xué)習(xí)(2)-網(wǎng)絡(luò)編程-TCP-UDP

    2.1. 通信協(xié)議 TCP、UDP對比 TCP 打電話 連接,穩(wěn)定 三次握手,四次揮手 客戶端、服務(wù)端 傳輸完成,釋放連接,效率低 UDP 發(fā)短信 不連接,不穩(wěn)定 客戶端,服務(wù)端,沒有明確的界限 不管有沒有準(zhǔn)備好,都可以發(fā)給你 導(dǎo)彈 DDOS:洪水供給?。柡凸簦?2.2. Tcp上傳測試 總結(jié):

    2024年04月09日
    瀏覽(32)
  • Java網(wǎng)絡(luò)編程(二)Socket 套接字(TCP和UDP),以及TCP的回顯

    Java網(wǎng)絡(luò)編程(二)Socket 套接字(TCP和UDP),以及TCP的回顯

    我們軟件工作者,著重編寫的是應(yīng)用層的代碼,但是發(fā)送這個(gè)數(shù)據(jù),我們就需要將應(yīng)用層傳輸?shù)絺鬏攲?,也就意味著我們需要調(diào)用應(yīng)用層的API,統(tǒng)稱為 Socket API。 套接字的分類: 流套接字:使用傳輸層TCP協(xié)議 特點(diǎn): 有連接:使用 TCP 通信的雙方,需要時(shí)刻保存對方的相關(guān)消

    2024年02月09日
    瀏覽(21)
  • 網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

    網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

    Java是 Internet 上的語言,它從語言級上提供了對網(wǎng)絡(luò)應(yīng)用程序的支持,程序員能夠很容易開發(fā)常見的網(wǎng)絡(luò)應(yīng)用程序。 Java提供的網(wǎng)絡(luò)類庫,可以實(shí)現(xiàn)無痛的網(wǎng)絡(luò)連接,聯(lián)網(wǎng)的底層細(xì)節(jié)被隱藏在 Java 的本機(jī)安裝系統(tǒng)里,由 JVM 進(jìn)行控制。并且 Java 實(shí)現(xiàn)了一個(gè)跨平臺(tái)的網(wǎng)絡(luò)庫, 程序

    2023年04月27日
    瀏覽(32)
  • 【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

    【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

    小亭子正在努力的學(xué)習(xí)編程,接下來將開啟javaEE的學(xué)習(xí)~~ 分享的文章都是學(xué)習(xí)的筆記和感悟,如有不妥之處希望大佬們批評指正~~ 同時(shí)如果本文對你有幫助的話,煩請點(diǎn)贊關(guān)注支持一波, 感激不盡~~ ? 目錄 前言 TCP協(xié)議 TCP協(xié)議特點(diǎn) TCP協(xié)議通信場景 TCP協(xié)議的幾個(gè)重要機(jī)制 一、

    2023年04月19日
    瀏覽(24)
  • Java網(wǎng)絡(luò)編程基礎(chǔ):TCP Socket套接字編程 IntAddress UDP等...

    Java網(wǎng)絡(luò)編程基礎(chǔ):TCP Socket套接字編程 IntAddress UDP等...

    目錄 一,網(wǎng)絡(luò)基礎(chǔ) 1.IP地址 2.端口 3.TCP/UDP協(xié)議 4.網(wǎng)絡(luò)編程開發(fā)模式 ?二,基于套接字的Java網(wǎng)絡(luò)編程 1.Socket ?2.InetAddress 三.基于TCP的Socket網(wǎng)絡(luò)編程 1.單服務(wù)器端與單Socket客戶端一次通訊 2.單服務(wù)器端接收多次通訊 ?3.TCP網(wǎng)絡(luò)通訊補(bǔ)充 四,基于UDP的網(wǎng)絡(luò)編程 1. DatagramSocket:收發(fā)

    2024年04月29日
    瀏覽(28)
  • 【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日
    瀏覽(40)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包