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

人到中年有點甜
TA貢獻(xiàn)1895條經(jīng)驗 獲得超7個贊
TCP建立數(shù)據(jù)交互需要經(jīng)過三次握手,這樣就能包裝交互的數(shù)據(jù)是可靠的安全的。而UDP建立的數(shù)據(jù)交互卻是不需要和TCP那樣要在客戶端和服務(wù)器端之間簡歷數(shù)據(jù)交互,而是服務(wù)器直接把數(shù)據(jù)分成很多很多小的數(shù)據(jù)包,丟給客戶端,這樣的話,數(shù)據(jù)是不可靠不安全的,但是數(shù)據(jù)發(fā)送的快。而使用UDP傳輸?shù)臄?shù)據(jù)比如視頻音頻數(shù)據(jù),這些數(shù)據(jù)大部分是不需要太高的安全性和可靠性,卻需要速度,所以一般就會用UDP傳輸。

FFIVE
TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
添加回答
舉報
0/150
提交
取消