日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(JAVA)基于Socket的TCP和UDP编程(第一章)

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (JAVA)基于Socket的TCP和UDP编程(第一章) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Socket是對TCP/IP協議的封裝,Socket本身并不是協議,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協議,TCP連接默認是用長連接的。

TCP和UDP是OSI模型中的運輸層中的協議。TCP提供可靠的通信傳輸,而UDP則常被用于讓廣播和細節控制交給應用的通信傳輸。

2、TCP與UDP如何加以區分使用?

??TCP用于在傳輸層有必要實現可靠性傳輸的情況。由于它是面向有連接并具備順序控制、重發控制等機制的。所以它可以為應用提供可靠傳輸。

另一方面,UDP主要用于那些對高速傳輸和實時性有較高要求的通信或廣播通信。舉一個IP電話進行通話的例子。如果使用TCP,數據在傳送途中如果丟失會被重發,但是這樣無法流暢地傳輸通話人的聲音,會導致無法進行正常交流。而采用UDP,它不會進行重發處理。從而也就不會有聲音大幅度延遲到達的問題。即使有部分數據丟失,也只是影響某一小部分的通話。此外,在多播與廣播通信中也使用UDP而不是TCP。RIP、DHCP等基于廣播的協議也要依賴于UDP。

二 、TCP和UDP的區別?

  • TCP面向連接;UDP是無連接的,即發送數據之前不需要建立連接。通俗理解:TCP就是打電話,對方必須應答,才能連接,UDP就是寫信,只管信寄出去,不管對方收到與否;
  • TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付;
  • ?TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的;
  • UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
  • ?每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信;
  • TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
  • TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道。
  • 三 、兩者的程序設計框架

    ?

  • TCP
  • :

    ?

    2.UDP:

    • TCP、UDP優缺點

    TCP優點:

  • ?TCP提供以認可的方式顯式地創建和終止連接。
  • TCP保證可靠的、順序的(數據包以發送的順序接收)以及不會重復的數據傳輸。
  • TCP處理流控制。
  • 允許數據優先
  • ?如果數據沒有傳送到,則TCP套接口返回一個出錯狀態條件。
  • TCP通過保持連續并將數據塊分成更小的分片來處理大數據塊。—無需程序員知道
  • 缺點:TCP在轉移數據時必須創建(并保持)一個連接。這個連接給通信進程增加了開銷,讓它比UDP速度要慢。

    UDP優點:

  • ?UDP不要求保持一個連接
  • UDP沒有因接收方認可收到數據包(或者當數據包沒有正確抵達而自動重傳)而帶來的開銷。
  • 設計UDP的目的是用于短應用和控制消息
  • ?在一個數據包連接一個數據包的基礎上,UDP要求的網絡帶寬比TCP更小。
  • Java網絡編程之(一): TCP的簡單連接

    這是一組非常基本的連接,

    局域網中電腦A用作服務端,IP為192.168,31.168

    電腦B用作客戶端,IP為192.168.31.132?

    package cn.com.tcp;import java.io.IOException; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; /*** 服務器端* 編寫者:zrf* 創建時間:2019年9月25日* cn.com.tcp*TcpServer_1.java*/ public class TcpServer_1 {public static void main(String[] args) throws IOException {//創建一個ServerSocket, 用于監聽客戶端Socket的連接請求ServerSocket soket = new ServerSocket(30000);//用循環不斷接收來自客戶端的請求while(true){//每當接收到一個客戶端的請求,服務器也對應產生一個SocketSocket ss = soket.accept();//將Socket對應的輸出流包裝成printStreamPrintStream ps = new PrintStream(ss.getOutputStream());ps.print("你的消息來自于服務器端!");//關閉輸出流,關閉socketps.close();ss.close();}

    客戶端:

    package cn.com.tcp;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException;/*** 客戶端* 編寫者:zrf* 創建時間:2019年9月25日* cn.com.tcp*TcpClient_1.java*/ public class TcpClient_1 {public static void main(String[] args) throws UnknownHostException, IOException {Socket socket = new Socket("192.168.1.101", 30000);//將Socket對應的輸入流包裝成BufferedReaderBufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line = br.readLine();System.out.println("來自服務器端的消息01: " + line);//關閉輸入流,關閉Socket;br.close();socket.close();} }

    ?

    總結

    以上是生活随笔為你收集整理的(JAVA)基于Socket的TCP和UDP编程(第一章)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。