欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 深入理解TCP協(xié)議與UDP協(xié)議的原理及區(qū)別

深入理解TCP協(xié)議與UDP協(xié)議的原理及區(qū)別

熱門標(biāo)簽:激戰(zhàn)黃昏地圖標(biāo)注說明 防城港市ai電銷機(jī)器人 隨州銷售外呼系統(tǒng)平臺 交行外呼系統(tǒng)有哪些 怎么更改地圖標(biāo)注電話 臨滄移動外呼系統(tǒng)哪家有 寧夏保險智能外呼系統(tǒng)哪家好 不同的地圖標(biāo)注 溫嶺代理外呼系統(tǒng)

網(wǎng)絡(luò)編程有三個要素,分別是IP地址、端口號和通信協(xié)議,那本文主要講述的是TCP與UDP這兩種通信協(xié)議,以及編程的實現(xiàn)。

首先,我們需要了解一下IP地址、端口號、通信協(xié)議的相關(guān)知識。

一、IP地址

網(wǎng)絡(luò)中的計算機(jī)使用IP地址來進(jìn)行唯一標(biāo)識,IP地址有IPv4和IPv6兩種類型。IPv4采用十進(jìn)制或二進(jìn)制表示形式,十進(jìn)制是一種比較常用的表示形式,如192.168.1.131,IPv6采用十六進(jìn)制表示形式,一般不常用。

如何查看IP地址相關(guān)信息:

在Windows系統(tǒng)下,打開cmd,輸入命令ipconfig,按回車即可查看。在Linux或Mac系統(tǒng)下,打開終端,使用ifconfig命令,按回車即可查看。

二、端口號

端口號是計算機(jī)中的應(yīng)用程序的一個整數(shù)數(shù)字標(biāo)號,用來區(qū)分不同的應(yīng)用程序。

0 ~ 1024 為被系統(tǒng)使用或保留的端口號,0 ~ 65535為有效的端口號,也就是說我們要對一些程序定義端口號的時候,要選擇1024 ~ 65535范圍內(nèi)的整數(shù)數(shù)字。

比如,以前學(xué)過的MySQL的端口號是3306,SQLServer的端口號是1433,查了一下Oracle的端口號是1521。

一定要把這些數(shù)據(jù)庫對應(yīng)的端口號,藏在深深的腦海里,以后在連接數(shù)據(jù)庫的時候,會使用到端口號。

三、通信協(xié)議

說的通俗一點,通信協(xié)議就是網(wǎng)絡(luò)通信中的規(guī)則,分為TCP協(xié)議和UDP協(xié)議兩種。

第一種:TCP協(xié)議
英文名:Transmission Control Protocol
中文名:傳輸控制協(xié)議
協(xié)議說明:TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。

舉例:打電話,需要雙方都接通,才能進(jìn)行對話

特點:效率低,數(shù)據(jù)傳輸比較安全

第二種:UDP協(xié)議
英文名:User Datagram Protocol
中文名:數(shù)據(jù)報協(xié)議
協(xié)議說明:UDP是一種面向無連接的傳輸層通信協(xié)議。

舉例:發(fā)短信,不需要雙方建立連接,But,數(shù)據(jù)報的大小應(yīng)限制在64k以內(nèi)

特點:效率高,數(shù)據(jù)傳輸不安全,容易丟包

四、三要素關(guān)系圖與網(wǎng)絡(luò)模型圖

1、網(wǎng)絡(luò)編程三要素關(guān)系圖

注:圖中端口號、IP地址為演示,并非真實

2、OSI參考模型與TCP/IP參考模型

五、TCP編程

TCP是基于字節(jié)流的傳輸層通信協(xié)議,所以TCP編程是基于IO流編程。

對于客戶端,我們需要使用Socket類來創(chuàng)建對象。對于服務(wù)器端,我們需要使用ServerSocket來創(chuàng)建對象,通過對象調(diào)用accept()方法來進(jìn)行監(jiān)聽是否有客戶端訪問。

客戶端與服務(wù)器端圖解:

客戶端與服務(wù)器端實現(xiàn)步驟:

前提:創(chuàng)建一個項目,在項目中創(chuàng)建兩個模塊(model),一個模塊用來放客戶端相關(guān)代碼,一個模塊用來放服務(wù)器端相關(guān)代碼。

目錄結(jié)構(gòu)如下圖

客戶端:

1、創(chuàng)建Socket對象,并指定服務(wù)器端應(yīng)用程序的端口號和服務(wù)器端主機(jī)的IP地址。

2、使用Socket的對象調(diào)用getOutputStream()方法來獲取字節(jié)輸出流對象。

3、調(diào)用字節(jié)輸出流的write(byte[] buf)或者write(int b)向服務(wù)器發(fā)送指定數(shù)據(jù)。

4、記得關(guān)閉流。

服務(wù)器端:

1、創(chuàng)建ServerSocket對象,并指定該應(yīng)用程序的端口號,端口號必須和客戶端指定的端口號一樣。

2、使用ServerSocket對象的accept()方法來監(jiān)聽客戶端發(fā)送過來的請求,返回值為Socket對象。

3、調(diào)用Socket對象的getInputStream()方法獲取字節(jié)輸入流對象

4、調(diào)用字節(jié)輸入流對象的read(byte[] buf)read()方法獲取數(shù)據(jù)。

5、記得關(guān)閉流。

實例:

客戶端向服務(wù)器端發(fā)送信息,并顯示在服務(wù)器端。

Client類(客戶端)

package cn.tkrnet.client;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException {
        
        //創(chuàng)建Socket對象,指定要發(fā)送到服務(wù)器端的IP地址,以及服務(wù)器端應(yīng)用程序接收的端口號
        //localhost代表本機(jī)IP地址
        Socket client = new Socket("localhost",9000);
        
        //獲取輸出流,用于向服務(wù)器端發(fā)送數(shù)據(jù)
        OutputStream os = client.getOutputStream();
        
        os.write("Java is my friend !".getBytes());
        System.out.println("信息已發(fā)送");

        //關(guān)閉流
        os.close();
        client.close();
    }
}

Server類(服務(wù)器端)

package cn.tkrnet.server;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        System.out.println("--服務(wù)器端已開啟--");

        //創(chuàng)建ServerSocket對象,這里的端口號必須與客戶端的端口號相同
        ServerSocket server = new ServerSocket(9000);

        //調(diào)用方法accept(),用來監(jiān)聽客戶端發(fā)來的請求
        Socket socket = server.accept();

        //獲取輸入流對象
        InputStream is = socket.getInputStream();

        //讀取輸入流中的數(shù)據(jù)
        int b = 0;
        while ((b =is.read()) != -1){
            System.out.print((char)b);
        }
        //關(guān)閉流
        is.close();
        socket.close();
        server.close();
    }
}

提示:在運行程序時,一定要先運行服務(wù)器端的程序代碼,再運行客戶端的程序代碼。因為客戶端要向服務(wù)器發(fā)送請求,前提是服務(wù)器端要處于開啟狀態(tài)。

Server類(服務(wù)器端)運行結(jié)果:

--服務(wù)器端已開啟--

Client類(客戶端)運行結(jié)果:

信息已發(fā)送

Client類(客戶端)運行后,Server類(服務(wù)器端)收到信息,運行結(jié)果:

--服務(wù)器端已開啟--Java is my friend !

實例分析:

服務(wù)器端啟動后,服務(wù)器端的accept()方法一直處于監(jiān)聽狀態(tài),直到客戶端連接了服務(wù)器,服務(wù)器端再從流中讀取客戶端發(fā)來的數(shù)據(jù)。

恕我直言,這是一個超級無敵簡單的單向通信實例。

六、UDP編程

UDP使用數(shù)據(jù)報進(jìn)行數(shù)據(jù)傳輸,沒有客戶端與服務(wù)器端之分,只有發(fā)送方與接收方,兩者哪個先啟動都不會報錯,但是會出現(xiàn)數(shù)據(jù)丟包現(xiàn)象。發(fā)送的內(nèi)容有字?jǐn)?shù)限制,大小必須限制在64k以內(nèi)。

發(fā)送方與接收方實現(xiàn)步驟:

前提:創(chuàng)建一個項目,在項目中創(chuàng)建兩個模塊(model),一個模塊用來放發(fā)送方相關(guān)代碼,一個模塊用來放接收方相關(guān)代碼。

目錄結(jié)構(gòu)如下圖

發(fā)送方:

1、創(chuàng)建DatagramSocket對象,可以指定應(yīng)用程序的端口號,也可以不指定。

2、準(zhǔn)備需要發(fā)送的數(shù)據(jù)

3、創(chuàng)建DatagramPacket對象,用來對發(fā)送的數(shù)據(jù)進(jìn)行打包,需要指定發(fā)送內(nèi)容、發(fā)送多少、發(fā)送到哪里和接收方的端口號四個參數(shù)。

4、調(diào)用DatagramSocket對象的send()方法發(fā)送數(shù)據(jù)。

5、記得關(guān)閉流。

接收方:

1、創(chuàng)建DatagramSocket對象,指定接收方的端口號,這個必須指定。

2、創(chuàng)建一個byte類型數(shù)組,用來接收發(fā)送方發(fā)送過來的數(shù)據(jù)。

3、創(chuàng)建DatagramPacket對象,準(zhǔn)備接收數(shù)據(jù)。

4、調(diào)用DatagramSocket對象的receive()方法用于接收數(shù)據(jù)。

5、使用String類的構(gòu)造方法將byte類型的數(shù)組中的數(shù)據(jù)轉(zhuǎn)化成String類型并顯示。

6、記得關(guān)閉流。

實例:

發(fā)送方發(fā)送信息,接收方接收信息,并顯示。

Sender類(發(fā)送方)

package cn.tkrnet.Sender;

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

public class Sender {
    public static void main(String[] args) throws IOException {

        //創(chuàng)建接受或發(fā)送的數(shù)據(jù)報套接字,并指定發(fā)送方的端口號為7770
        DatagramSocket ds = new DatagramSocket(7770);   //端口號也可以不指定
        System.out.println("---發(fā)送方---");

        //創(chuàng)建數(shù)據(jù)報對象,用來發(fā)送數(shù)據(jù)
        byte[] b = "Java is my friend !".getBytes();

        //8800為接收方的端口號,netAddress.getByName("localhost")是獲取主機(jī)的IP地址
        DatagramPacket dp = new DatagramPacket(b,b.length, InetAddress.getByName("localhost"),7788);

        ds.send(dp);    //發(fā)送數(shù)據(jù)報
        System.out.println("數(shù)據(jù)已發(fā)送");
        //關(guān)閉流
        ds.close();
    }
}

Receiver類(接收方)

package cn.tkrnet.receiver;

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

public class Receiver {
    public static void main(String[] args) throws IOException {
        System.out.println("---接收方---");

        //創(chuàng)建數(shù)據(jù)報套接字對象,指定的端口號要和發(fā)送方發(fā)送數(shù)據(jù)的端口號相同
        // (不是發(fā)送方的端口號7770,是發(fā)送方發(fā)送數(shù)據(jù)的端口號7788)
        DatagramSocket ds = new DatagramSocket(7788);

        //創(chuàng)建接收數(shù)據(jù)報的對象
        byte[] b = new byte[1024];
        DatagramPacket dp = new DatagramPacket(b,b.length);

        //接收數(shù)據(jù)
        ds.receive(dp);
        System.out.println(new String(b,0,dp.getLength()));
        //關(guān)閉流
        ds.close();
    }
}

提示:在運行程序時,先運行發(fā)送方程序,還是先運行接收方程序都不會報錯,但是有可能會出現(xiàn)數(shù)據(jù)丟包,一般我們都先運行接收方的程序代碼,再運行發(fā)送方的程序代碼。

Receiver類(接收方)運行結(jié)果:

---接收方---

Sender類(發(fā)送方)運行結(jié)果:

---發(fā)送方---數(shù)據(jù)已發(fā)送

Sender類(發(fā)送方)運行后,Receiver類(接收方)接收到信息,運行結(jié)果:

---接收方---Java is my friend !

實例分析:

只有接收方先啟動運行,才會存在端口號為7788的程序,發(fā)送方才能發(fā)送數(shù)據(jù)到指定端口號7788,接收方才能接收數(shù)據(jù)。

不瞞你說,這也是個超級無敵簡單的單向通信實例。

七、總結(jié)

到此這篇關(guān)于深入理解TCP協(xié)議與UDP協(xié)議的原理及區(qū)別的文章就介紹到這了,更多相關(guān)TCP協(xié)議與UDP協(xié)議內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • C語言編寫基于TCP和UDP協(xié)議的Socket通信程序示例
  • 使用C#實現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的基本示例
  • C#獲取Windows進(jìn)程監(jiān)聽的TCP/UDP端口實例
  • java 基礎(chǔ)知識之網(wǎng)絡(luò)通信(TCP通信、UDP通信、多播以及NIO)總結(jié)
  • java中TCP/UDP詳細(xì)總結(jié)
  • Python網(wǎng)絡(luò)編程之TCP與UDP協(xié)議套接字用法示例
  • tcp、udp、ip協(xié)議分析_動力節(jié)點Java學(xué)院整理
  • python網(wǎng)絡(luò)編程 使用UDP、TCP協(xié)議收發(fā)信息詳解

標(biāo)簽:忻州 無錫 阜陽 青海 哈密 河源 紅河 沈陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入理解TCP協(xié)議與UDP協(xié)議的原理及區(qū)別》,本文關(guān)鍵詞  深入,理解,TCP,協(xié)議,與,UDP,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入理解TCP協(xié)議與UDP協(xié)議的原理及區(qū)別》相關(guān)的同類信息!
  • 本頁收集關(guān)于深入理解TCP協(xié)議與UDP協(xié)議的原理及區(qū)別的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    91毛片在线观看| 在线观看亚洲成人| 精品日韩一区二区| 日韩av不卡在线观看| 国产免费一区二区三区最新6| 欧美色中文字幕| 一区二区三区四区视频精品免费| 成人的网站免费观看| 成人羞羞国产免费图片| 国产精品久久久久影院| 国产91清纯白嫩初高中在线观看| 99成人在线观看| 国产精品久久久一区麻豆最新章节| 国产白丝精品91爽爽久久| 美女福利视频网| 国产精品网站在线播放| 成人国产视频在线观看| 在线免费观看成人短视频| 一区二区三区精品久久久| 国产ts在线观看| 制服丝袜在线91| 免费精品视频在线| 国产在线综合视频| 国产精品污污网站在线观看| av在线综合网| 欧美日本高清视频在线观看| 视频一区二区三区中文字幕| 中文字幕一区二区人妻在线不卡| 久久久精品综合| 高潮精品一区videoshd| 欧美性大战久久久久久久| 午夜视频在线观看一区二区 | 秋霞国产午夜精品免费视频| 在线不卡av电影| 美国黄色一级毛片| 精品sm在线观看| 国产精品一区二区不卡| 曰本女人与公拘交酡| 亚洲午夜在线电影| 国产精品1000部啪视频| 国产日韩欧美综合在线| 成人18精品视频| 欧美情侣在线播放| 美国av一区二区| 三级全黄做爰视频| 亚洲综合免费观看高清完整版在线| 中国一级特黄录像播放| 久久久久国产精品麻豆| av一区二区三区在线| 欧美一区二区三区免费大片| 国产精品一区二区在线观看不卡 | 在线视频欧美区| 日韩电影在线看| 娇小11一12╳yⅹ╳毛片| 成人免费一区二区三区视频 | 国偷自产av一区二区三区麻豆| 日韩欧美高清dvd碟片| 国产一区二区伦理| 欧美在线999| 老司机精品视频导航| 成熟的女同志hd| 三级欧美韩日大片在线看| 久久久久人妻一区精品色| 亚洲自拍与偷拍| 免费网站在线高清观看| 亚洲激情在线激情| 色综合99久久久无码国产精品| 亚洲免费av网站| 男生草女生视频| 一区二区欧美精品| 美国黄色特级片| 亚洲18色成人| 婷婷久久综合网| 奇米777欧美一区二区| 日本久久电影网| 国产主播一区二区三区| 欧美日韩精品三区| 粉嫩高潮美女一区二区三区| 日韩一区二区中文字幕| av一区二区三区| 久久久久久久久久久久久夜| 波多野结衣办公室双飞 | 色婷婷综合激情| 精品一区二区日韩| 欧美精品色一区二区三区| 福利一区在线观看| 久久色视频免费观看| 欧美图片自拍偷拍| 国产精品夫妻自拍| 特级西西www444人体聚色| 亚洲成人黄色影院| 欧美综合色免费| 懂色av中文字幕一区二区三区| 菠萝菠萝蜜网站| 亚洲精品欧美激情| 91精品国产闺蜜国产在线闺蜜| 久久国产剧场电影| 欧美精品精品一区| 91丨国产丨九色丨pron| 中文字幕免费不卡在线| 国产免费无遮挡吸奶头视频| 午夜不卡av在线| 欧美午夜不卡在线观看免费| 成人中文字幕电影| 国产日韩欧美精品在线| xxxxx在线观看| 日韩av中文字幕一区二区三区| 欧美亚一区二区| 菠萝蜜视频在线观看一区| 国产亚洲欧美激情| 亚洲一区 欧美| 韩国精品久久久| 精品国产乱码久久久久久免费 | 久久国产精品一区二区| 日韩一区二区三| 欲求不满的岳中文字幕| 亚洲韩国一区二区三区| 欧美午夜一区二区三区免费大片| av一二三不卡影片| 最新不卡av在线| 日本韩国一区二区| 99精品一区二区| 亚洲美女视频在线| 91久久线看在观草草青青| av电影在线不卡| 亚洲色图清纯唯美| 色婷婷综合久久久中文一区二区| 成人一区二区三区在线观看| 国产精品白丝在线| 一本一本久久a久久精品综合麻豆| 粉嫩aⅴ一区二区三区四区 | 亚洲第一精品在线| 欧美精品高清视频| 国产精品探花一区二区在线观看| 日韩国产欧美一区二区三区| 日韩你懂的电影在线观看| 在线观看福利片| 国产一区二区在线观看免费| 国产欧美日韩一区二区三区在线观看| 国产欧美小视频| 成人午夜免费电影| 一区二区三区在线免费观看| 欧美视频在线一区二区三区| 香港三日本8a三级少妇三级99| 青青草91视频| 国产片一区二区三区| 亚洲国产美女视频| 丰满饥渴老女人hd| 日韩有码一区二区三区| 精品国产乱码久久久久久久| 国产精品视频看看| 99国产欧美久久久精品| 亚洲电影激情视频网站| 日韩免费视频一区二区| 日本污视频网站| 成人aaaa免费全部观看| 一区二区高清视频在线观看| 欧美一区2区视频在线观看| 一区二区三区伦理片| 成人免费视频一区二区| 一区二区三区产品免费精品久久75| 少妇一级淫片免费放播放| 老司机午夜精品| 国产精品毛片大码女人| 欧美三区免费完整视频在线观看| 黄色在线观看av| 国产成人精品1024| 亚洲一区免费观看| 精品国内片67194| 色综合天天性综合| 99re久久精品国产| 国产成人综合精品三级| 亚洲国产日韩av| 久久―日本道色综合久久| 国产精品白嫩白嫩大学美女| 中文字幕免费高清视频| 国产成人av一区| 亚洲成人777| 国产午夜精品久久久久久免费视 | 日本精品一二三| 狠狠网亚洲精品| 亚洲精品视频在线观看免费| 精品福利视频一区二区三区| 日本精品一级二级| 摸摸摸bbb毛毛毛片| 制服下的诱惑暮生| 国产一区二区调教| 亚洲一区二区在线播放相泽 | 国产一二三精品| 亚洲亚洲精品在线观看| 国产亚洲自拍一区| 欧美人与z0zoxxxx视频| 97精品在线播放| 中文字幕日韩三级片| 不卡高清视频专区| 蜜桃视频免费观看一区| 亚洲精品国产精品乱码不99 | 色综合中文字幕国产| 亚洲一区二区三区四区五区六区| 成人丝袜18视频在线观看|