更新時(shí)間:2022-06-27 來源:黑馬程序員 瀏覽量:
DatagramPacket類用于封裝UDP通信中發(fā)送或者接收的數(shù)據(jù)。要想創(chuàng)建一個(gè)DatagramPacket對象,首先需要了解它的構(gòu)造方法。在創(chuàng)建發(fā)送端和接收端的DatagramPacket對象時(shí),使用的構(gòu)造方法有所不同。
接收端的構(gòu)造方法只需要接收一個(gè)字節(jié)數(shù)組來存放接收到的數(shù)據(jù), 而發(fā)送端的構(gòu)造方法不但要接收存放了發(fā)送數(shù)據(jù)的字節(jié)數(shù)組,還需要指定發(fā)送端IP地址和端口號。下面根據(jù)APH文檔的內(nèi)容,對DatagramPacket的構(gòu)造方法進(jìn)行詳細(xì)講解。
(1) DalagramPaeket (byte []buf, int length)
使用該構(gòu)造方法在創(chuàng)建DagramPacket對象時(shí),指定了封裝數(shù)據(jù)的字節(jié)數(shù)組和數(shù)據(jù)的大小,沒有指定IP地址和端口號。很明顯,這樣的對象只能用于接收端,不能用于發(fā)送端。因?yàn)榘l(fā)送端一定要明確指出數(shù)據(jù)的目的地(IP地址和端口號),而接收端不需要明確知道數(shù)據(jù)的來源,只需要接收到數(shù)據(jù)即可。
(2) DatagramPacket ( byte[ ]buf, int length, InetAddress addr, int port)
使用該構(gòu)造方法在創(chuàng)建DatagramPacket對象時(shí),不僅指定了封裝數(shù)據(jù)的字節(jié)數(shù)組和數(shù)據(jù)的大小,而且指定了數(shù)據(jù)包的目標(biāo)IP地址( addr)和端口號( port)。該對象通常用于發(fā)送端,因?yàn)樵诎l(fā)送數(shù)據(jù)時(shí)必須指定接收端的IP地址和端口號,就好像發(fā)送貨物的集裝箱上面必須標(biāo)明接收人的地址一樣。
(3 ) DatagramPacket ( byte[ ] buf, int offset, int length )
該構(gòu)造方法與第一個(gè)構(gòu)造方法類似,同樣用于接收端,只不過在第一個(gè)構(gòu)造方法的基礎(chǔ)上,增加了一offset參數(shù),該參數(shù)用于指定接收到的數(shù)據(jù)在放人buf緩沖數(shù)組時(shí)是從offset處開始的。
(4) DatagramPacket (byte[ ]buf, int offset, int length, InetAddress addr, int port )
該構(gòu)造方法與第二個(gè)構(gòu)造方法類似,同樣用于發(fā)送端,只不過在第二個(gè)構(gòu)造方法的基礎(chǔ)上增加了一個(gè)offset參數(shù),該參數(shù)用于指定一個(gè)數(shù)組中發(fā)送數(shù)據(jù)的偏移量為offset,即從offset位置開始發(fā)送數(shù)據(jù)。
Java培訓(xùn):查看不同版本之間的差異和代碼的改動
2022-06-23Java培訓(xùn):git實(shí)戰(zhàn)技巧-如何查找哪一次提交導(dǎo)致了項(xiàng)目運(yùn)行錯(cuò)誤
2022-06-23Java培訓(xùn):多人協(xié)作開發(fā)出現(xiàn)代碼沖突,如何合并代碼?
2022-06-232022Java學(xué)習(xí)路線圖-黑馬程序員
2022-06-23Java培訓(xùn):Git代碼沖突-不同分支之間的代碼沖突
2022-06-23Java培訓(xùn):git實(shí)戰(zhàn)技巧-本地剛做出的修改、暫存和提交如何進(jìn)行撤銷
2022-06-22