国产成人不卡-国产成人不卡亚洲精品91-国产成人成人一区二区-国产成人刺激视频在线观看-国产成人的电影在线观看-国产成人福利

將想法與焦點(diǎn)和您一起共享

Java網(wǎng)絡(luò)編程基礎(chǔ)(三) Datagram類使用方法發(fā)布者:本站     時(shí)間:2020-05-06 16:05:13

Datagram(數(shù)據(jù)包)是一種盡力而為的傳送數(shù)據(jù)的方式,它只是把數(shù)據(jù)的目的地記錄在數(shù)據(jù)包中,然后就直接放在網(wǎng)絡(luò)上,系統(tǒng)不保證數(shù)據(jù)是否能安全送到,或者什么時(shí)候可以送到,也就是說它并不保證傳送質(zhì)量。

1 UDP套接字

數(shù)據(jù)報(bào)(Datagram)是網(wǎng)絡(luò)層數(shù)據(jù)單元在介質(zhì)上傳輸信息的一種邏輯分組格式,它是一種在網(wǎng)絡(luò)中傳播的、獨(dú)立的、自身包含地址信息的消息,它能否到達(dá)目的地、到達(dá)的時(shí)間、到達(dá)時(shí)內(nèi)容是否會(huì)變化不能準(zhǔn)確地知道。它的通信雙方是不需要建立連接的,對(duì)于一些不需要很高質(zhì)量的應(yīng)用程序來說,數(shù)據(jù)報(bào)通信是一個(gè)非常好的選擇。還有就是對(duì)實(shí)時(shí)性要求很高的情況,比如在實(shí)時(shí)音頻和視頻應(yīng)用中,數(shù)據(jù)包的丟失和位置錯(cuò)亂是靜態(tài)的,是可以被人們所忍受的,但是如果在數(shù)據(jù)包位置錯(cuò)亂或丟失時(shí)要求數(shù)據(jù)包重傳,就是用戶所不能忍受的,這時(shí)就可以利用UDP協(xié)議傳輸數(shù)據(jù)包。在Java的java.net包中有兩個(gè)類DatagramSocket和DatagramPacket,為應(yīng)用程序中采用數(shù)據(jù)報(bào)通信方式進(jìn)行網(wǎng)絡(luò)通信。

使用數(shù)據(jù)包方式首先將數(shù)據(jù)打包,Java.net包中的DategramPacket類用來創(chuàng)建數(shù)據(jù)包。數(shù)據(jù)包有兩種,一種用來傳遞數(shù)據(jù)包,該數(shù)據(jù)包有要傳遞到的目的地址;另一種數(shù)據(jù)包用來接收傳遞過來的數(shù)據(jù)包中的數(shù)據(jù)。要?jiǎng)?chuàng)建接收的數(shù)據(jù)包,通過DatagramPackett類的方法構(gòu)造:

public DatagramPacket(byte ibuft[],int ilength)

public DatagramPacket( byte ibuft[],int offset ,int ilength)

ibuf[]為接受數(shù)據(jù)包的存儲(chǔ)數(shù)據(jù)的緩沖區(qū)的長(zhǎng)度,ilength為從傳遞過來的數(shù)據(jù)包中讀取的字節(jié)數(shù)。當(dāng)采用第一種構(gòu)造方法時(shí),接收到的數(shù)據(jù)從ibuft[0]開始存放,直到整個(gè)數(shù)據(jù)包接收完畢或者將ilength的字節(jié)寫入ibuft為止。采用第二種構(gòu)造方法時(shí),接收到的數(shù)據(jù)從ibuft[offset]開始存放。如果數(shù)據(jù)包長(zhǎng)度超出了ilength,則觸發(fā)IllegalArgument-Exception。不過這是RuntimeException,不需要用戶代碼捕獲。示范代碼如下:

byte[ ] buffer=new byte[8912];

DatagramPacket datap=new DatagramPacket(buffer ,buffer.length( ));

創(chuàng)建發(fā)送數(shù)據(jù)包的構(gòu)造方法為:

public DatagramPacket(byt ibuf[],int ilength,InetAddrss iaddr,int port)

public DatagramPacket(byt ibuf[],int offset , int ilength,InetAddrss iaddr,int port)

iaddr為數(shù)據(jù)包要傳遞到的目標(biāo)地址,port為目標(biāo)地址的程序接受數(shù)據(jù)包的端口號(hào)(即目標(biāo)地址的計(jì)算機(jī)上運(yùn)行的客戶程序是在哪一個(gè)端口接收服務(wù)器發(fā)送過來的數(shù)據(jù)包)。ibuf[]為要發(fā)送數(shù)據(jù)的存儲(chǔ)區(qū),以ibuf數(shù)組的offset位置開始填充數(shù)據(jù)包ilength字節(jié),如果沒有offset,則從ibuf數(shù)組的0位置開始填充。以下示范代碼是要發(fā)送一串字符串:


String s = new String("java networking");
byte[ ] data=s.getbytes();
int port=1024;
try{
InetAddress ineta= InetAddress.getByName(" 169.254.0.14");
DatagramPacket datap=new DatagramPacket
(data ,data.length( ),ineta,port);
}
catch(IOException e) {
}
 

數(shù)據(jù)包也是對(duì)象,也有操作方法用來獲取數(shù)據(jù)包的信息,這是很有用的。其方法如下:

public InetAddress getAddress() 如果是發(fā)送數(shù)據(jù)包,則獲得數(shù)據(jù)包要發(fā)送的目標(biāo)地址,但是如果是接收數(shù)據(jù)包則返回發(fā)送此數(shù)據(jù)包的源地址。

 

public byte[]getData()

返回一個(gè)字節(jié)數(shù)組,其中是數(shù)據(jù)包的數(shù)據(jù)。如果想把字節(jié)數(shù)組轉(zhuǎn)換成別的類型就要進(jìn)行轉(zhuǎn)化。如果想轉(zhuǎn)化成String類型,可以進(jìn)行以下的處理,設(shè)DatagramPacket datap為:

String s = new String(datap.getbytes());

public int getLength() 獲得數(shù)據(jù)包中數(shù)據(jù)的字節(jié)數(shù)。

pubic int getPort( ) 返回?cái)?shù)據(jù)包中的目標(biāo)地址的主機(jī)端口號(hào)。

發(fā)送和接收數(shù)據(jù)包還需要發(fā)送和接收數(shù)據(jù)包的套接字,即DatagramSocket對(duì)象,DatagramSocket套接字在本地機(jī)器端口監(jiān)聽是否有數(shù)據(jù)到達(dá)或者將數(shù)據(jù)包發(fā)送出去。其構(gòu)造方法如下。

public DatagramSocket() 用本地機(jī)上任何一個(gè)可用的端口創(chuàng)建一個(gè)套接字,這個(gè)端口號(hào)是由系統(tǒng)隨機(jī)產(chǎn)生的。使用方法如下:


try{
DatagramSocket datas=new DatagramSocket( );
//發(fā)送數(shù)據(jù)包
}
catch(SocketException e){
}
 

這種構(gòu)造方法沒有指定端口號(hào),可以用在客戶端。如果構(gòu)造不成功則觸發(fā)SocketException異常。

public DatagramSocket(int port)

用一個(gè)指定的端口號(hào)port創(chuàng)建一個(gè)套接字。

當(dāng)不能創(chuàng)建套接字時(shí)就拋出SocketException異常,其原因是指定的端口已被占用或者是試圖連接低于1024的端口,但是又沒有具備權(quán)限。

2 實(shí)例:利用DatagramSocket查詢端口占用情況

我們可以利用這個(gè)異常探查本地機(jī)的端口號(hào)有沒有服務(wù)。見示例12-9。

【程序源代碼】


1 // ==================== Program Description =====================
2 // 程序名稱:示例12-9: UDPScan.java
3 // 程序目的:熟悉DatagramSocket的基本用法,查詢端口的占用情況
4 //=========================================================
5 import java.net.*;
6
7 public class UDPScan
8 {
9 public static void main(String args[])
10 {
11 for (int port=1024;port<=65535;port++) {
12 try {
13 DatagramSocket server=new DatagramSocket(port);
14 server.close();
15 }
16 catch(SocketException e) {
17 System.out.println("there is a server in port "+port+".");
18 }
19 }
20 }
21 }
 

【程序輸出結(jié)果】

there is a server in port 1026.

there is a server in port 1028.

there is a server in port 1046.

there is a server in port 1900.

【程序注解】

在第11~19行我們用for循環(huán)以端口號(hào)為參數(shù)實(shí)例化DatagramSocket,其中端口號(hào)從1024到65535。如果在實(shí)例過程中出錯(cuò),會(huì)拋出SocketException異常。我們根據(jù)這個(gè)異常就可以判斷出哪些端口被占用,哪些還是空閑的。值得一提的是,我們?cè)趯?shí)例化了DatagramSocket后,調(diào)用了close()關(guān)閉它。作為一種好的作風(fēng),應(yīng)該遵循。端口號(hào)在1024以下的系統(tǒng)可能會(huì)用到,比如HTTP默認(rèn)為80端口,F(xiàn)TP默認(rèn)為21端口,等等,所以我們從1024端口開始探查。



選擇我們,優(yōu)質(zhì)服務(wù),不容錯(cuò)過
1. 優(yōu)秀的網(wǎng)絡(luò)資源,強(qiáng)大的網(wǎng)站優(yōu)化技術(shù),穩(wěn)定的網(wǎng)站和速度保證
2. 15年上海網(wǎng)站建設(shè)經(jīng)驗(yàn),優(yōu)秀的技術(shù)和設(shè)計(jì)水平,更放心
3. 全程省心服務(wù),不必?fù)?dān)心自己不懂網(wǎng)絡(luò),更省心。
------------------------------------------------------------
24小時(shí)聯(lián)系電話:021-58370032
XXXX内射美国老太太| 免费观看大片的APP视频| 24小时日本高清在线播放| 熟妇高潮精品一区二区三区| 久久精品AⅤ无码中文字字幕蜜桃| 成 人 黄 色 网 站 ·大| 亚洲欧美乱日韩乱国产| 日韩人妻一区二区三区免费| 久久久久高潮毛片免费全部播放| 饭桌上故意张开腿让公H视频| 亚洲最刺激成人无码| 十八禁无码免费网站| 毛葺葺老太做受视频| 国产精品免费_区二区三区观看| 中文字幕AⅤ天堂在线| 无码人妻AⅤ一区二区三区玉蒲团| 免费热播女人毛片| 国产亚洲欧美日韩俺去了| SLEEP强弙VIDE○SHO| 亚洲人妻在线视频| 视频免费网站入口| 免费国精产品WNW2544| 国产在线精品国自产拍影院同性| しぼっちうぞ2在线观看1一| 亚洲人成电影网站色WWW| 十八禁啪啪污污网站免费下载| 美女高潮流白浆娇喘免费网站| 国产乱XXXXX97国语对白| www.xx欧美大鸡巴| 亚洲欧美日韩久久精品| 熟妇高潮一区二区三区 | BGMBGMBGM毛多多| 亚洲精品成人福利网站| 色欲天天天综合网| 免费看人妻丰满熟妇AV无码片| 国产无遮挡又爽又黄大胸免费 | 成在人线AV无码免费| 伊人性伊人情综合网| 无套内内射视频网站| 人妻 中文 无码 JAVHD| 久久精品国产亚洲AV麻豆网站| 国产超薄肉色丝袜视频| 2019四虎影视最新在线| 亚洲成A人片在线观看国产| 色8久久人人97超碰香蕉987 | 亚洲AV无码精品色午夜APP| 日产乱码一二三区别免费必看| 久久亚洲精品成人无码| 国产深夜男女无套内射| 波多野结衣在线观看AV| 张柏芝性XXXXXⅩ| 亚洲AV无码成人精品区天堂| 日本久久久久精品免费网播放| 久久天天躁狠狠躁夜夜96流白浆 | 国产AV无码专区亚洲AV麻豆丫| ASS亚洲熟妇毛茸茸PICS| 亚洲欧洲中文日韩乱码AV | 精品一区二区三区国产在线观看| 国产成人免费无码AV在线播放| Chinese高潮老女人| 亚洲色成人一区二区三区| 无码国产精品一区二区免费I6| 欧美一进一出抽搐大尺度视频 | 波多野结衣一区二区三区AV高清 | 一区二区三区在线 | 网站| 性饥渴老头XXXXⅩHD| 日韩少妇激情一区二区| 免费人成在线观看网站品善网 | 天天躁日日躁狠狠躁婷婷高清| 漂亮人妻去按摩被按中出| 久久婷婷五月综合色精品| 国精产品砖一区二区三区糖心| 刺激战场未满十八岁能玩多久| 97超碰精品成人国产| 亚洲伊人久久综合| 性无码专区一色吊丝中文字幕| 日日噜噜夜夜狠狠VA视频 | 国产94在线 | 亚洲| A级毛片毛片免费观看丝瓜| 亚洲一区二区三区成人网站| 香蕉大美女天天爱天天做| 色欲av无码一区二区人妻精油| 欧美性狂猛BBBBBBXXXXXX| 看全色黄大色黄大片 视频| 加勒比一本HEYZO高清视频| 国产精东天美AV影业传媒| 成人午夜无码国产| AV一区二区三区| 伊人依成久久人综合网| 亚洲国产精品无码久久久动漫| 无码日韩精品一区二区人妻 | 成人性生交大片免费看| ASS年轻少妇浓毛PICS| 尤物精品国产第一福利网站| 亚洲国产成人久久综合一区77| 无码人妻一区二区三区在线| 色猫咪AV在线网址| 人妻精品一区二区三区蜜桃| 免费中文熟妇在线影片密芽| 久久久综合九色综合88| 精品国产一区二区三区久久| 国产亚洲欧美精品一区| 国产大屁股喷水视频在线观看| 成人无码一区二区三区网站| CHINESE农村老妓女| 坐公交忘穿内裤被挺进老| 亚洲最大成人一区久久久| 亚洲国产成人久久综合电影| 压在稚嫩的身体上耕耘| 无码精品人妻一区二区三区老牛| 少妇久久久久久被弄高潮| 日本老妇XXXXX免费| 青青草原精品国产亚洲AV| 男人一边吃奶一边弄下边好爽| 巨胸美乳无码人妻在线| 久久久久久久性潮| 久久成人国产精品无码| 精品厕所偷拍各类美女TP嘘嘘| 国内情侣作爱视频网站| 国产毛片一二区三区四区| 国产粉嫩馒头无套内在线观看免费| 大乳VIDEOS巨大吃奶| 超碰人人看人人2017| 拔萝卜全程不该盖被子怎么办| Chinese老熟女老女人HD| 99久久国产热无码精品免费| 中文字幕日本六区小电影| 与大屁股熟女啪啪喷水| 夜夜爽夜夜叫夜夜高潮漏水| 亚洲熟妇AV综合网五月| 亚洲精品无码永久中文字幕| 亚洲成av人无码| 亚洲AV无码一区二区三区在线| 亚欧美日乱码视频在线观看 | 国产成人无码精品XXXX网站| 丰满妇女强高潮ⅩXXX| 成人片黄网站色大片免费观看| 波多野结衣守望人妻理论| YY8090福利午夜理论片| GOGO高清大胆全人艺术| AV无码波多野结衣| AV天堂影音先锋AV色资源网站| 97久久精品人人爽人人爽蜜臀| 50多岁岳不让我戴套| 18禁黄网站禁片免费观看国产| 中文字幕人妻偷伦在线视频| 中国BGMBGMBGM老妇和青年交| 伊人久久综合无码成人网| 呦女IUU极品资源| 在线观看视频一区二区三区| 在线黄色网站观看汙| 中文字幕久久久久人妻中出| 中文字幕无码免费久久9一区9| 中文在线っと好きだった最新版 | BBwBBw高潮喷水日本少妇自| ASS美女裸体洗澡PICS| ASS十三小美女ASSPICS| 91麻豆精品无码一区二区三区| 94久久国产乱子伦精品免费| 99精品久久久久精品双飞| AV 无码 在线 观看| CHINA熟妇老熟女HD| YW.1CNC爆乳尤物未| 波多野结衣迅雷下载| 吃奶呻吟打开双腿做受是免费视频| 番茄TODO社区免费看片| 国产成人MV视频在线观看| 国产精品人人做人人爽人人添| 国产免费不卡午夜福利在线 | 欧洲亚洲日韩性无码专区| 人妻少妇精品视频专区| 日本熟妇厨房BBW| 少妇高潮惨叫久久久久电影69| 天天爽夜夜爽人人爽一区二区| 无码人妻丰满熟妇区BBBBXXXX| 性无码免费一区二区三区在线| 亚洲成A人片在线观看WWW| 亚洲熟妇色ⅩXXXX日本| 与上司出轨的人妻| 69ZXX少妇内射无码| SEERX性欧美老妇| 超碰成人人人做人人爽| 公交车大龟廷进我身体里| 国产成人愉拍免费视频| 国产无人区一码二码三码MBA| 护士猛少妇色XXⅩXXX猛叫| 久久国产精品娇妻素人| 老湿机69福利区无码| 欧美A级毛欧美1级A大片式放| 人妻一区二区在线| 少妇人妻偷人精品一区二区| 无码人妻精品一区二区三区99不卡| 亚洲AV成人片无码网站网一区| 亚洲狠狠色丁香婷婷综合| 野花日本韩国视频免费高清观看 | 无码加勒比一区二区三区四区| 亚洲 另类 日韩 制服 无码| 亚洲精品二区国产综合野狼| 一区二区三区国产精品保安 | 欧美黑人成人www在线观看|