java网络编程udp_java网络编程(UDP详解)
UDP詳解
一,TCP/IP協(xié)議棧中,TCP協(xié)議和UDP協(xié)議的聯(lián)系和區(qū)別?
聯(lián)系:
TCP和UDP是TCP/IP協(xié)議棧中傳輸層的兩個(gè)協(xié)議,它們使用網(wǎng)絡(luò)層功能把數(shù)據(jù)包發(fā)送到目的地,從而為應(yīng)用層提供網(wǎng)絡(luò)服務(wù)。
區(qū)別:
1. TCP是面向連接的傳輸。UDP是無連接的傳輸。
2. TCP保證數(shù)據(jù)按照發(fā)送順序到達(dá),UDP無法保證。
4. TCP是可靠性傳輸,而UDP則是不可靠傳輸。
5. UDP因?yàn)樯倭撕芏嗫刂菩畔?#xff0c;所以傳輸速度比TCP速度快。
6. TCP適合用于傳輸大量數(shù)據(jù),UDP適合用于傳輸小量數(shù)據(jù)。
舉例:TCP的server和client之間通信就好比兩個(gè)人打電話。UDP的server和client之間的通信就像兩個(gè)人發(fā)電報(bào)或者發(fā)短信。
二,UDP通訊協(xié)議的特點(diǎn):
1. 將數(shù)據(jù)極封裝為數(shù)據(jù)包,面向無連接。
2. 每個(gè)數(shù)據(jù)包大小限制在64K中
3.因?yàn)闊o連接,所以不可靠
4. 因?yàn)椴恍枰⑦B接,所以速度快
5.udp 通訊是不分服務(wù)端與客戶端的,只分發(fā)送端與接收端。
三,怎樣來編寫UDP?
發(fā)送數(shù)據(jù)步驟:
1.創(chuàng)建socket服務(wù)
2.創(chuàng)建數(shù)據(jù)包
3.將數(shù)據(jù)封裝到數(shù)據(jù)包中,添加ip和端口以及數(shù)據(jù)
4.發(fā)送
5.關(guān)閉資源
接收數(shù)據(jù)步驟:
1.創(chuàng)建socket服務(wù),并監(jiān)聽端口
2.創(chuàng)建數(shù)據(jù)包,用來接收數(shù)據(jù)
3.用socket接收數(shù)據(jù)到數(shù)據(jù)包中
4.從數(shù)據(jù)包中取出數(shù)據(jù)
5.關(guān)閉資源
四,代碼實(shí)現(xiàn)UDP通信
1.客戶端代碼
1 importjava.io.IOException;2 importjava.net.DatagramPacket;3 importjava.net.DatagramSocket;4 importjava.net.InetAddress;5 importjava.util.Scanner;6
7 public classUser {8 static Scanner sc= newScanner(System.in);9 public static void main(String[] args) throwsIOException {10 //1.創(chuàng)建客戶端套接字
11 DatagramSocket ds = newDatagramSocket();12 //2.創(chuàng)建客戶端發(fā)送數(shù)據(jù)包
13 while(true){14 System.out.println("請輸入要發(fā)送的信息:");15 String info =sc.nextLine();16 byte []buf =info.getBytes();17 DatagramPacket dp = newDatagramPacket(buf, buf.length,18 InetAddress.getByName("localhost"), 152);19 //3.發(fā)送數(shù)據(jù)包
20 ds.send(dp);21 //4.結(jié)束發(fā)送循環(huán)
22 if("886".equals(info)){23 break;24 }25 }26 //5.關(guān)閉套接字
27 ds.close();28 }29 }
2.服務(wù)端代碼
1 importjava.io.IOException;2 importjava.net.DatagramPacket;3 importjava.net.DatagramSocket;4 importjava.net.InetAddress;5
6 public classServer {7 public static void main(String[] args) throwsIOException {8 //1.創(chuàng)建服務(wù)端套接字
9 DatagramSocket ds = new DatagramSocket(152);//注意指定端口10 //2.創(chuàng)建接受客戶端信息的空數(shù)據(jù)包
11 while(true){12 byte [] buf =new byte[1024];13 DatagramPacket dp = newDatagramPacket(buf, buf.length);14 //3.接受數(shù)據(jù)
15 ds.receive(dp);16 //4.拆分?jǐn)?shù)據(jù)
17 byte[] data =dp.getData();18 //5.獲取客戶端IP和主機(jī)名
19 InetAddress ip =dp.getAddress();20 String host =ip.getHostName();21 //6.讀取數(shù)據(jù)
22 String info = new String(buf,0,buf.length);23 System.out.println("來自"+host+"的消息是:"+info);24 ds.close();25 //7.關(guān)閉套接字
26 }27 }28 }
精品java學(xué)習(xí)視頻
java的IO流技術(shù):鏈接:https://pan.baidu.com/s/1KWR9JHQ20uy0mx-1CIBwvA??提取碼:3dn8
總結(jié)
以上是生活随笔為你收集整理的java网络编程udp_java网络编程(UDP详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python树莓派设备_Python+树
- 下一篇: java string string_深