午夜伦伦-午夜毛片不卡高清免费-午夜毛片福利-午夜毛片在线观看-国产精品一二三区-国产精品一国产精品

將想法與焦點(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í)候可以送到,也就是說(shuō)它并不保證傳送質(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)用程序來(lái)說(shuō),數(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類用來(lái)創(chuàng)建數(shù)據(jù)包。數(shù)據(jù)包有兩種,一種用來(lái)傳遞數(shù)據(jù)包,該數(shù)據(jù)包有要傳遞到的目的地址;另一種數(shù)據(jù)包用來(lái)接收傳遞過(guò)來(lái)的數(shù)據(jù)包中的數(shù)據(jù)。要?jiǎng)?chuàng)建接收的數(shù)據(jù)包,通過(guò)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為從傳遞過(guò)來(lái)的數(shù)據(jù)包中讀取的字節(jié)數(shù)。當(dāng)采用第一種構(gòu)造方法時(shí),接收到的數(shù)據(jù)從ibuft[0]開(kāi)始存放,直到整個(gè)數(shù)據(jù)包接收完畢或者將ilength的字節(jié)寫(xiě)入ibuft為止。采用第二種構(gòu)造方法時(shí),接收到的數(shù)據(jù)從ibuft[offset]開(kāi)始存放。如果數(shù)據(jù)包長(zhǎng)度超出了ilength,則觸發(fā)IllegalArgument-Exception。不過(guò)這是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ā)送過(guò)來(lái)的數(shù)據(jù)包)。ibuf[]為要發(fā)送數(shù)據(jù)的存儲(chǔ)區(qū),以ibuf數(shù)組的offset位置開(kāi)始填充數(shù)據(jù)包ilength字節(jié),如果沒(méi)有offset,則從ibuf數(shù)組的0位置開(kāi)始填充。以下示范代碼是要發(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ì)象,也有操作方法用來(lái)獲取數(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)聽(tīng)是否有數(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)造方法沒(méi)有指定端口號(hào),可以用在客戶端。如果構(gòu)造不成功則觸發(fā)SocketException異常。

public DatagramSocket(int port)

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

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

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

我們可以利用這個(gè)異常探查本地機(jī)的端口號(hào)有沒(méi)有服務(wù)。見(jiàn)示例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í)例過(guò)程中出錯(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端口開(kāi)始探查。



選擇我們,優(yōu)質(zhì)服務(wù),不容錯(cuò)過(guò)
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
坐在黑得发紫的巨龙上写作业| 日本熟妇厨房XXXXX乱电影| 岳胀耸的雪乳奶水| 久无码久无码AV无码| 亚洲日韩高清AⅤ在线观看| 精品人妻在线一区二区三区 | 亚洲AV噜噜狠狠网址蜜桃| 国产日产欧产精品精品推荐| 性夜影院爽黄A爽免费动漫| 国产亚洲精久久久久久无码7| 亚洲AV麻豆AⅤ无码电影| 国内一区二区三区香蕉AⅤ| 亚洲高清成人AV电影网站| 精品人妻AV区波多野结衣| 亚洲熟妇丰满美女XXXXX| 久久婷婷综合色丁香五月| 欲香欲色天天天综合和网| 蜜臀久久久久精品久久久| 7777788888管家婆中特| 欧美最猛黑人XXXX黑人猛交| 被三个男人躁一夜好爽小说| 日本在线视频WWW鲁啊鲁| 隔着衣服吃你的小尖尖作文| 无卡无码无免费毛片| 国产亚洲美女精品久久久| 亚洲国产精品久久久久蜜桃网站| 久久WWW免费人成人片| 伊人色综合一区二区三区| 妺妺窝人体色WWW网| BGMBGMBGM老少配| 日本丰满少妇毛茸茸| 高潮VIDEOSSEXOHD潮喷| 午夜无码人妻AⅤ大片色欲李宗瑞| 国产在线看片无码人精品| 亚洲欧美成人久久综合中文网 | 日本久久久久精品免费网播放| 嗯~啊哈好深好骚啊哼| 午夜理论片免费播放| 精品少妇人妻AV无码久久| 已婚少妇美妙人妻系列| 欧美午夜理伦三级在线观看| 岛国AV在线无码播放| 武侠 欧美 另类 人妻| 荒野大镖客暴躁老太太| 又白又大的两座峰| 人妻体体内射精一区二区| 公交车挺进朋友人妻的身体里| 午夜无码免费福利视频网址| 精品一区二区三区AV天堂| 中文无码字幕中文有码字幕| 人妻少妇精品视中文字幕国语| 国产99视频精品免费视频6| 亚洲AV网站在线| 老头老太太GMBGMBGM| А√天堂资源地址在线下载| 玩小雪跪趴把腿分到最大影视| 精品国产国偷自产在线观看| 做AJ姿势教程大全图片| 日韩一区二区三区AV| 国产又爽又黄又无遮挡的激情视频 | 国产精品久久无码不卡黑寡妇| 亚洲国产美女精品久久久| 免费观看电视在线高清 | 亚洲精品国偷自产在线99正片| 免费观看的AV毛片的网站| 成人午夜福利电影天堂| 亚洲AV成人精品一区二区三区| 久久综合国产乱子伦精品免费| 被客人玩得站不起来大前端| 午夜三级A三级三点窝| 看全色黄大色大片免费无码| 暴躁老阿姨CSGO攻略大全| 亚洲 精品 综合 精品 自拍 | 日韩欧美一区二区三区免费观看| 国产又猛又黄又爽| √最新版天堂资源网在线| 色综合久久中文综合网| 精品精品国产高清A毛片| A级黑粗大硬长爽猛出猛进| 无码A级毛片免费视频内谢5J | 人妻天天爽夜夜爽精品视频| 国产探花在线精品一区二区| 在线天堂中文在线资源网| 色欲精品国产一区二区三区AV| 精品国产亚洲一区二区三区| APPSTORE美区免费| 香蕉直播永久免费版APP| 蜜臀AⅤ免费网站| 国产精品电影久久久久电影网| 一本色道久久综合亚州精品蜜桃| 日韩精品免费无码专区| 精品人亚洲成A人片在线观看无码专区 | 亚洲 精品 制服 校园 无码| 免费人成网WW555| 国产精品久久久久婷婷五月色| 诱人的老师HD中字| 天堂资源中文最新版在线一区| 久久人午夜亚洲精品无码区| 俄罗斯PONONDLX| 亚洲综合色婷婷在线观看| 乳头羞涩NP公主| 久久WWW成人免费网站| 粗大的内捧猛烈进出无码 | 免费观看四虎精品国产地址| 国产交换配乱婬视频偷| 中文字幕AⅤ人妻一区二区 | 亚洲毛片无码专区亚洲乱| 日本三级在线播放线观看视频| 精品无码三级在线观看视频| 成人午夜高潮刺激免费视频| 亚洲综合色成在线观看| 四虎库影必出精品8848| 久久亚洲AV无码精品色午夜麻豆| 国产成人无码精品XXXX网站| 中文无码日韩欧免费视频APP| 无码人妻巨屁股系列大又挺拔 | 97人澡人人添人人爽欧美| 亚州中文字幕午夜福利电影| 欧美黑人XXXXXⅩ| 精品国产一区二区三区免费| 俄罗斯卖CSGO的网站免费进入| 欲しがる人妻 波多野结衣| 无码免费伦费影视在线观看| 欧美人与动欧交视频| 精品色欲少妇一区二区三区| 丰满少妇人妻HD高清果冻传媒 | 日韩日韩日韩日韩 日韩 日韩 | 宝宝都湿透了还嘴硬疼怎么回事| 亚洲一区二区三区高清AV| 婷婷色婷婷深深爱播五月| 内射人妻深入内射| 精品国产18久久久久久| 高清乱码一区二区三区| 377P欧洲日本亚洲大胆| 亚洲精品无码成人区久久| 双腿吊起揉捏花蒂| 欧美人与动牲交A精品| 久久精品无码一区二区软件| 国产高清在线精品一区二区三区 | 亚洲 欧洲 日产 经典| 日本少妇人妻XXXXⅩ18| 麻豆妓女爽爽一区二区三| 哈昂~哈昂够了太多太深| 地师传人电影在线观看| 97人妻成人免费视频| 亚洲日产中文字幕无码| 午夜伦4480YY私人影院免费| 日本熟妇XXⅩ浓密黑毛HD| 男女啪啪摸下面喷水网站| 久久国产乱子精品免费女| 国产免费人成视频在线播放播 | 思思RE热免费精品视频66| 欧美性受XXXX88喷潮| 久久久久亚洲AV无码去区首| 国产曰的好深好爽免费视频| 东北往事之黑道风云20年| 99精品全国免费观看视频| 野花影视在线观看免费高清完整版 | 午夜视频体内射.COM.COM| 日韩欧美亚洲每日更新在线| 欧美黑人巨大VIDEOS极品| 久久人妻少妇嫩草AV无码专区| 护士交换粗吟配乱大交| 国产精品免费一区二区三区四区| 成人A毛片免费全部播放| ASS鲜嫩鲜嫩PICS日本| 在人线AV无码免费高潮喷水| 亚洲精品蜜桃久久久久久| 无遮挡粉嫩小泬久久久久久欧| 少妇爆乳无码AV无码波霸| 人妻[21P]大胆| 女子遭遇疯狂侵犯| 噜噜狠狠色综合久色AⅤ网址| 精品国产丝袜黑色高跟鞋| 国产熟女老妇300部MP4| 国产成人三级在线视频网站观看| 播放片高清MV在线观看| JAPANESE老熟妇乱子伦视| 综合无码一区二区三区 | 熟女一区二区三区| 日韩中文字幕中文无码久本草| 欧洲站高端8码特大码47| 女性裸体无遮挡啪啪网站| 鲁大师在线影院免费观看| 久久久久人妻一区精品性色AV | AV无码天堂一区二区三区| 最新国产精品拍自在线观看| 永久亚洲成A人片777777| 亚洲一区制服无码中字| 亚洲日韩精品无码AV一区二区三 | 人妻少妇一区二区三区| 欧美人禽猛交乱配1| 欧美丰满熟妇XXXX性大屁股| 男生女生一起相差差差| 蜜臀AV在线播放| 免费人成在线观看视频高潮| 妺妺晚上扒我内裤吃我精子H| 久久伊人精品一区二区三区| 久久这里精品国产99丫E6| 久久精品伊人一区二区三区|