日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中的DatagramPacket与DatagramSocket的初步

發布時間:2024/1/23 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中的DatagramPacket与DatagramSocket的初步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.基本概念:

  a.DatagramPacket與DatagramSocket位于java.net包中

  b.DatagramPacket表示存放數據的數據報,DatagramSocket表示接受或發送數據報的套接字

  c.由這兩個類所有構成的網絡鏈接是基于UDP協議,是一種不可靠的協議。

  之所以不可靠是因為發送方不負責數據是否發送成功,接收方收到數據時也不會   向發送方反饋成功消息,容易導致信息的丟失。

  但是這種協議卻是快捷的,比如CS(半條命)游戲就是基于UDP協議,否則我們估計   要玩一次游戲后就會把機子砸了,所以我們可以看到游戲有時會失幀。

  2.使用方法:

  要建立基于UDP協議的鏈接,我們應該先建立套接字<DatagramSocket>(即發送站或接收站),之后通過套接字發送或接受數據<DatagramPacket>。

  我們先了解一下DatagramSocket和DatagramPacket類

  DatagramSocket類:

  構造方法:

  DatagramSocket():

  表示創建一個默認的套接字,并綁定到本地地址和一個隨機的端口號

  DatagramSocket(int port):

  與上面不同的是,綁定到特定端口號,其它不變

  DatagramSocket(int port, InetAddress iad):

  表示創建一個套接字,綁定到特定的端口號及指定地址

  DatagramSocket(SocketAddress sad);

  表示創建一個套接字,綁定到特定的套接字地址

  小提示:所謂的本地地址我們可以這樣來理解,我們通過“控制面板-本地連接-支持”中可以看到一個IP地址,這就是本地的IP地址,也暫且理解為本地地址。

  基本方法:

  close():

  關閉套接字

  recevie(DatagramPacket dp):

  接受數據報

  send(DatagramPacket dp):

 發送數據報

  這里觸及了數據報,下面介紹數據報:

  DatagramPacket類:

  構造方法:(只列出主要的)

  接受類型:

  DatagramPacket(byte[] buf, int length):

  用來接受長度為length的buf數據(即數據存于字節數組buf中)

  發送類型:

  DatagramPacket(byte[] buf, int length, InetAddress address, int port);

  將length長的buf數據發送到指定的地址的端口號處

  DatagramPacket(byte[] buf, int length, SocketAddress address);

   將length長的buf數據發送到指定的套接字地址處

  有上面可知,我們發送數據時構造的數據報應該是發送類型的,而接受數據報時應該是接受類型的    

  開始書寫代碼

  代碼意圖:

  1.一個接收方,一個發送方

  2.當接收方收到發送方發送的消息后,打印發送的消息及發送方的地址和端口號,之后向發送反饋一條信息“接受方:我收到了!”

  3.發送方打印出接收方反饋的消息

  詳細思路見代碼:

import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;public class Sender {public static void main(String[] args) {try {// 創建發送方的套接字,IP默認為本地,端口號隨機DatagramSocket sendSocket = new DatagramSocket();// 確定要發送的消息:String mes = "你好!接收方!";// 由于數據報的數據是以字符數組傳的形式存儲的,所以傳轉數據byte[] buf = mes.getBytes();// 確定發送方的IP地址及端口號,地址為本地機器地址int port = 8888;InetAddress ip = InetAddress.getLocalHost();// 創建發送類型的數據報:DatagramPacket sendPacket = new DatagramPacket(buf, buf.length, ip,port);// 通過套接字發送數據:sendSocket.send(sendPacket);// 確定接受反饋數據的緩沖存儲器,即存儲數據的字節數組byte[] getBuf = new byte[1024];// 創建接受類型的數據報DatagramPacket getPacket = new DatagramPacket(getBuf, getBuf.length);// 通過套接字接受數據sendSocket.receive(getPacket);// 解析反饋的消息,并打印String backMes = new String(getBuf, 0, getPacket.getLength());System.out.println("接受方返回的消息:" + backMes);// 關閉套接字sendSocket.close();} catch (Exception e) {e.printStackTrace();}} }import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketAddress;public class Receive {public static void main(String[] args) {try {// 確定接受方的IP和端口號,IP地址為本地機器地址InetAddress ip = InetAddress.getLocalHost();int port = 8888;// 創建接收方的套接字,并制定端口號和IP地址DatagramSocket getSocket = new DatagramSocket(port, ip);// 確定數據報接受的數據的數組大小byte[] buf = new byte[1024];// 創建接受類型的數據報,數據將存儲在buf中DatagramPacket getPacket = new DatagramPacket(buf, buf.length);// 通過套接字接收數據getSocket.receive(getPacket);// 解析發送方傳遞的消息,并打印String getMes = new String(buf, 0, getPacket.getLength());System.out.println("對方發送的消息:" + getMes);// 通過數據報得到發送方的IP和端口號,并打印InetAddress sendIP = getPacket.getAddress();int sendPort = getPacket.getPort();System.out.println("對方的IP地址是:" + sendIP.getHostAddress());System.out.println("對方的端口號是:" + sendPort);// 通過數據報得到發送方的套接字地址SocketAddress sendAddress = getPacket.getSocketAddress();// 確定要反饋發送方的消息內容,并轉換為字節數組String feedback = "接收方說:我收到了!";byte[] backBuf = feedback.getBytes();// 創建發送類型的數據報DatagramPacket sendPacket = new DatagramPacket(backBuf,backBuf.length, sendAddress);// 通過套接字發送數據getSocket.send(sendPacket);// 關閉套接字getSocket.close();} catch (Exception e) {e.printStackTrace();}} }

測試已通過

  先啟動接收方,然后啟動發送方即可

總結

以上是生活随笔為你收集整理的Java中的DatagramPacket与DatagramSocket的初步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女同性αv亚洲女同志 | 欧美午夜精品久久久久免费视 | 中文字幕一区二区三区四区 | 青青草免费在线观看视频 | 黄视频在线观看免费 | 国产精品无码影院 | av无码久久久久久不卡网站 | 日韩作爱 | 男裸体无遮挡网站 | 欧美三级 欧美一级 | 麻豆国产精品777777在线 | 欧美性猛交乱大交 | 各处沟厕大尺度偷拍女厕嘘嘘 | 国产精品久久久久久久久免费 | 色哟哟精品观看 | 欧美综合视频在线观看 | 色视频导航 | 中文字幕av无码一区二区三区 | 国产精品精品 | www久久com | 亚州av网站 | 国产成人精品三级麻豆 | 亚洲性一区 | 国产精品99久久久久久久 | 毛片视频网| 男人天堂国产 | 中文字幕五区 | 国产欧美一区二区三区四区 | 日日噜噜噜噜人人爽亚洲精品 | 一起操17c | 久久99久久99精品免视看婷婷 | 自拍偷拍第一页 | 台湾佬美性中文娱乐 | www.99在线 | 久操av| 91美女福利视频 | 国产中文字幕在线观看 | hd丰满圆润的女人hd | av免费网 | 精品中文字幕一区二区三区 | eeuss一区二区三区 | 精品少妇人妻一区二区黑料社区 | 午夜久久剧场 | 性欧美18—19sex性高清 | 一区二区三区黄色片 | 亚洲国产成人一区 | 在线看黄色的网站 | 日韩久久久久久久 | 男同激情视频 | 青草一区二区 | 超碰97久久 | 波多野结衣小视频 | 秋霞在线一区二区 | 日本精品一区二区三区四区 | 精品无码一区二区三区免费 | 色xxxx| 狠狠爱综合 | 色妞视频| 一区二区视频在线观看 | 任你躁av一区二区三区 | 欧美成人一区二区三区高清 | 国产乱子伦一区二区 | 1024精品一区二区三区日韩 | 色妞www精品视频 | 欧美亚州国产 | 天海翼av在线播放 | 精品国产乱码久久久久久鸭王1 | 视频一区二区在线观看 | 亚洲色图视频在线观看 | 亚洲黄色视屏 | 国产福利一区二区三区在线观看 | 亚洲熟妇无码另类久久久 | 亚洲一区电影在线观看 | 亚洲av无码一区二区三区在线播放 | 国产成人精品视频在线 | 成人 黄 色 免费播放 | 中文字幕欧美人妻精品一区蜜臀 | 99re久久精品国产 | 成人黄色免费 | 五月天视频 | 欧美日韩八区 | 日日摸天天爽天天爽视频 | 97精品一区二区视频在线观看 | 中文字幕第80页 | www性 | 国产区123 | 黄色片在线免费观看 | 四川一级毛毛片 | 成年人免费在线观看视频网站 | 国产一级片精品 | 国产人妻精品一区二区三 | 精品国内自产拍在线观看视频 | 国产精品有限公司 | 久色视频在线观看 | 99er在线| 亚洲精品小视频 | 中文字幕乱码av | 久久久午夜视频 | 96久久久 |