更新時間:2022-06-27 來源:黑馬程序員 瀏覽量:
DatagramPacket類用于封裝UDP通信中發(fā)送或者接收的數(shù)據(jù)。要想創(chuàng)建一個DatagramPacket對象,首先需要了解它的構造方法。在創(chuàng)建發(fā)送端和接收端的DatagramPacket對象時,使用的構造方法有所不同。
接收端的構造方法只需要接收一個字節(jié)數(shù)組來存放接收到的數(shù)據(jù), 而發(fā)送端的構造方法不但要接收存放了發(fā)送數(shù)據(jù)的字節(jié)數(shù)組,還需要指定發(fā)送端IP地址和端口號。下面根據(jù)APH文檔的內(nèi)容,對DatagramPacket的構造方法進行詳細講解。
(1) DalagramPaeket (byte []buf, int length)
使用該構造方法在創(chuàng)建DagramPacket對象時,指定了封裝數(shù)據(jù)的字節(jié)數(shù)組和數(shù)據(jù)的大小,沒有指定IP地址和端口號。很明顯,這樣的對象只能用于接收端,不能用于發(fā)送端。因為發(fā)送端一定要明確指出數(shù)據(jù)的目的地(IP地址和端口號),而接收端不需要明確知道數(shù)據(jù)的來源,只需要接收到數(shù)據(jù)即可。
(2) DatagramPacket ( byte[ ]buf, int length, InetAddress addr, int port)
使用該構造方法在創(chuàng)建DatagramPacket對象時,不僅指定了封裝數(shù)據(jù)的字節(jié)數(shù)組和數(shù)據(jù)的大小,而且指定了數(shù)據(jù)包的目標IP地址( addr)和端口號( port)。該對象通常用于發(fā)送端,因為在發(fā)送數(shù)據(jù)時必須指定接收端的IP地址和端口號,就好像發(fā)送貨物的集裝箱上面必須標明接收人的地址一樣。
(3 ) DatagramPacket ( byte[ ] buf, int offset, int length )
該構造方法與第一個構造方法類似,同樣用于接收端,只不過在第一個構造方法的基礎上,增加了一offset參數(shù),該參數(shù)用于指定接收到的數(shù)據(jù)在放人buf緩沖數(shù)組時是從offset處開始的。
(4) DatagramPacket (byte[ ]buf, int offset, int length, InetAddress addr, int port )
該構造方法與第二個構造方法類似,同樣用于發(fā)送端,只不過在第二個構造方法的基礎上增加了一個offset參數(shù),該參數(shù)用于指定一個數(shù)組中發(fā)送數(shù)據(jù)的偏移量為offset,即從offset位置開始發(fā)送數(shù)據(jù)。