亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么TCP發送數據要經過字節流、打印流?而UDP發送竟然如此的簡單?

為什么TCP發送數據要經過字節流、打印流?而UDP發送竟然如此的簡單?

喵喵時光機 2019-03-21 18:15:00
首先是TCP的客戶端的代碼        //1.創建客戶端Socket,指定服務器端地址和端口        Socket socket = new Socket("localhost",8888);        //2.獲取輸出流,向服務器端發送信息         OutputStream os = socket.getOutputStream();//字節輸出流         PrintWriter pw = new PrintWriter(os);//將輸出流包裝為打印流         pw.write("用戶名:admin;密碼:453");         pw.flush();//刷新緩存,向服務器端輸出         socket.shutdownOutput();然后是UDP的客戶端的代碼    //1.定義服務器的地址、端口號、數據    InetAddress address = InetAddress.getByName("localhost");    int port=8000;    byte[] data = "用戶名:admin;密碼:123".getBytes();    //2.創建數據報,包含發送的數據信息    DatagramPacket packet=new DatagramPacket(data,data.length,address,port);    //3.創建DatagramSocket對象    DatagramSocket socket =new DatagramSocket();    //4.向服務器端發送數據報    socket.send(packet);這里的客戶端向本地服務器發送一些數據。令我無法理解的是為什么TCP如此復雜?獲取輸出流,包裝打印流,還要刷新一次緩存。相比之下UDP卻又那么簡單。這是為什么?我覺得可能是協議問題,看來最近得補補基礎了。
查看完整描述

5 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

因為TCP是基于流,而UDP是基于報文啊。


查看完整回答
反對 回復 2019-04-17
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

TCP建立數據交互需要經過三次握手,這樣就能包裝交互的數據是可靠的安全的。而UDP建立的數據交互卻是不需要和TCP那樣要在客戶端和服務器端之間簡歷數據交互,而是服務器直接把數據分成很多很多小的數據包,丟給客戶端,這樣的話,數據是不可靠不安全的,但是數據發送的快。而使用UDP傳輸的數據比如視頻音頻數據,這些數據大部分是不需要太高的安全性和可靠性,卻需要速度,所以一般就會用UDP傳輸。


查看完整回答
反對 回復 2019-04-17
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

UDP的簡潔是犧牲了準確以換取高效


查看完整回答
反對 回復 2019-04-17
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

一句話解釋,TCP是要保證數據的正確性,而UDP是不保證數據的正確到達的,包丟了就丟了,適用于突發性場景,不適合于要求數據準確性的場景


查看完整回答
反對 回復 2019-04-17
  • 5 回答
  • 0 關注
  • 965 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號