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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络通信-1(InetAddress、UDP、TCP、DatagramPacket、DatagramSocket、UDP通信示例)

發布時間:2024/10/14 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络通信-1(InetAddress、UDP、TCP、DatagramPacket、DatagramSocket、UDP通信示例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 網絡通信

1.1三要素:

  • IP地址:網絡中設備表示,可用主機名
  • 端口號,用于表示進程的邏輯地址
  • 傳輸協議:通訊的規則,常見的協議:TCP、IP
  • 1.2 Socket

    為網絡編程提供的一種機制。

    通信的兩端都有Socket。

    網絡通信其實就是Socket間的通信,數據在兩個Socket之間通過IO傳輸。

    2. InetAddress

    所有已實現的接口:

    Serializable

    直接已知子類:

    Inet4Address(32位), Inet6Address(128位)

    表示互聯網協議 (IP) 地址。

    • IP 地址是 IP 使用的 32 位或 128 位無符號數字,它是一種低級協議,UDP 和 TCP 協議都是在它的基礎上構建的。
    • InetAddress 的實例包含 IP 地址,還可能包含相應的主機名(取決于它是否用主機名構造或者是否已執行反向主機名解析)。
    • 地址類型:
      • 單播:單個接口的標識符。發送到單播地址的數據包被交付給由該地址標識的接口。
      • 多播:一組接口(通常屬于不同的節點)的標識符。發送到多播地址的數據包被交付給由該地址標識的所有接口。
    • 主機名解析:
      • 主機名到 IP 地址的解析:通過使用本地機器配置信息和網絡命名服務(如域名系統(Domain Name System,DNS)和網絡信息服務(Network Information Service,NIS))來實現。要使用的特定命名服務默認情況下是本地機器配置的那個。對于任何主機名稱,都返回其相應的 IP 地址。
      • 反向名稱解析:意味著對于任何 IP 地址,都返回與 IP 地址關聯的主機。

    InetAddress 類提供將主機名解析為其 IP 地址(或反之)的方法。

    2.1 方法

    static InetAddress getByName(String host):在給定主機名的情況下確定主機的 IP 地址。

    • host:輸出后是主機名/IP地址
    • IP:輸出后是/IP地址
    • 有異常拋出:UnknownHostException

    static InetAddress getLocalHost():返回本地主機

    String getHostName():獲取此 IP 地址的主機名。

    String getHostAddress():返回 IP 地址字符串(以文本表現形式)。

    2.2 使用

    import java.net.InetAddress; import java.net.UnknownHostException;public class Test{public static void main(String[] args) throws UnknownHostException{InetAddress local=InetAddress.getLocalHost();InetAddress remote=InetAddress.getByName("www.baidu.com");System.out.println("本地IP地址是:"+local.getHostAddress());System.out.println("百度的IP地址是:"+remote.getHostAddress());System.out.println("百度的主機名是:"+remote.getHostName());} }

    運行結果:

    成功

    3. UDP

    User Datagram Protocol

    用戶數據包協議

    是無連通協議:在發送數據時,數據的發送端和接收端不建立邏輯連接

    消耗資源少,通信效率高

    用于音頻、視頻和普通數據的傳輸

    不保證數據完整性

    數據包大小在64K

    4. TCP

    TAransmission Control Protocol

    傳輸控制協議

    面向連接的通信協議

    在傳輸數據前,先在發送端和接受選建立邏輯連接,再傳輸數據。

    提供了兩臺計算機之間的可靠的無差錯疏忽傳輸

    4.1 三次握手

    創立連接

  • C向S發出連接請求
  • S向C回送一個響應
  • C向S發送確認消息
  • 可保證傳輸數據的安全性

    eg.下載文件

    5. DatagramPacket

    此類表示數據報包。 UDP通信中發送或者接受的數據

    數據報包用來實現無連接包投遞服務(類似于集裝箱)。

    每條報文僅根據該包中包含的信息從一臺機器路由到另一臺機器。

    從一臺機器發送到另一臺機器的多個包可能選擇不同的路由,也可能按不同的順序到達。

    不對包投遞做出保證。

    5.1 構造方法

    DatagramPacket(byte[] buf,int length):?構造DatagramPacket,用來接收長度為length的數據包。

    • 接收端的,只需要接收的一個字節數組來存放收到的數據,無需知道數據的來源

    DatagramPacket(byte[] buf,int length,InetAddress address,int port):?構造數據報包,用來將長度為length的包發送到指定主機上的指定端口號。

    • 接收字節數組,指定發送目的端的IP地址和端口號。

    5.2 方法

    InetAddress getAddress():發揮某臺機器的IP地址。此數據報將要發往該機器或者是從該機器接收到的。

    int getPort():返回某遠程主機的端口號。此數據報將要發往該主機或者是從該主機接收到的。

    byte[] getData():返回數據緩沖區

    int getLength():返回將要發送或接收到的數據的長度。

    6. DatagramSocket

    此類表示用來發送和接收數據報包的套接字。

    數據報套接字是包投遞服務的發送或接收點(類似于碼頭)。

    每個在數據報套接字上發送或接收的包都是單獨編址和路由的。從一臺機器發送到另一臺機器的多個包可能選擇不同的路由,也可能按不同的順序到達。

    在 DatagramSocket 上總是啟用 UDP 廣播發送。為了接收廣播包,應該將 DatagramSocket 綁定到通配符地址。在某些實現中,將 DatagramSocket 綁定到一個更加具體的地址時廣播包也可以被接收。

    DatagramSocket s=new DatagramSocket(null); s.bind(new InetSocketAddress(8888));

    ?這等價于:

    DatagramSocket s=new DatagramSocket(8888);

    兩個例子都能創建能夠在UDP 8888端口上接收廣播的DatagramSocket。

    6.1 構造方法

    DatagramSocket():構造數據報套接字并將其綁定到本地主機上任何可用的端口。

    DatagramSocket(int port):創建數據報套接字并將其綁定到本地主機上的指定端口。

    • 接收端:徐志鼎一個端口號,可監聽指定的端口;
    • 發送端:可指定端口號;也可不指定,系統會分配一個沒有被其他網絡程序使用的端口號

    6.2 方法

    void receive(DatagramPacket p):?從此套接字接收數據報包。

    void send(DatagramPacket p):從此套接字發送數據報包。

    7. UDP網絡程序

    7.1 發送端

    • 創建DatagramSocket對象
    • 創建DatagramPacket對象,并封裝數據
    • 發送數據
    • 釋放流資源
    import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;public class Test{public static void main(String[] args) throws IOException{DatagramSocket sendSocket=new DatagramSocket();byte[] buffer="hello,UDP".getBytes();DatagramPacket dp=new DatagramPacket(buffer,buffer.length,InetAddress.getByName("***本機IP地址***"),8888);sendSocket.send(dp);sendSocket.close();} }

    7.2 接收端

    • 創建DatagramSocket對象
    • 創建DatagramPacjet對象
    • 接收數據存儲到DatagramPacket對象中
    • 獲取DatagramPacket對象的內容
    • 釋放流資源
    import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;public class DemoTest{public static void main(String[] args) throws IOException {DatagramSocket receiveSocket=new DatagramSocket(8888);byte[] buffer=new byte[1024];DatagramPacket dp=new DatagramPacket(buffer,1024);receiveSocket.receive(dp);InetAddress ipAddress=dp.getAddress();String ip=ipAddress.getHostAddress();byte[] data=dp.getData();int length=dp.getLength();String datastr=new String(data,0,length);System.out.println("IP地址:"+ip+",數據是:"+datastr);receiveSocket.close();} }

    運行結果:

    7.3 分析

    發送端

    DatagramPacket dp=new DatagramPacket(buffer,buffer.length,InetAddress.getByName("***本機IP地址***"),8888);如果此句中,主機名錯,UnknowHostException;端口號錯,可正常發出,接收端收不到。

    無連接的協議,無接收端也可運行。

    接收端

    啟動兩次接收端:

    • 第一次正常
    • 第二次:BindException,端口號已綁定。
      • 端口號不可重復,它是一個進程在內存中的地址

    總結

    以上是生活随笔為你收集整理的网络通信-1(InetAddress、UDP、TCP、DatagramPacket、DatagramSocket、UDP通信示例)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 免费看黄色片网站 | 99久久99久久精品国产片果冰 | xxxx性视频 | 国产综合无码一区二区色蜜蜜 | 麻豆黄色片 | 成人女同在线观看 | 亚洲自拍偷拍欧美 | 玉足调教丨vk24分钟 | 精品无码久久久久久久 | 亚洲精品白虎 | 久久国产经典 | 成人国产精品久久久 | 国产98在线 | 美女扒开尿口给男人捅 | 欧美福利视频 | 91原创视频| 一区二区三区不卡视频在线观看 | 国产黄色片视频 | 亚洲爆爽 | 欧美乱三级 | 韩国一级淫片免费看 | 欧美极品一区 | 四虎影院在线观看免费 | 国产在线一区二区三区四区 | 亚洲精品高清视频 | 亚洲色图丝袜美腿 | 国产欧美日韩精品在线 | 色呦呦网| 国产黑丝在线播放 | 粉嫩在线 | 天天夜夜骑 | 欧美两根一起进3p做受视频 | 亚洲精品热 | 日韩激情 | 久久激情网| 粗口调教gay2022.com| 日日干干 | 91在线最新 | 男人天堂一区二区 | 91视频久久 | 国产精品三级 | 偷偷色噜狠狠狠狠的777米奇 | 久操免费视频 | 久操av | 日韩国产欧美一区二区 | 精品一区二区三区欧美 | 成人免费视屏 | 日日狠狠久久 | 免费的黄色网址 | 欧洲亚洲国产精品 | 天降女子| 精品一区二区视频在线观看 | 国产精品成人无码免费 | 初尝黑人巨炮波多野结衣 | 欧美噜噜噜 | 嫩草嫩草嫩草嫩草嫩草 | www.性欧美| 国产一区欧美 | 日韩精品中文字幕一区二区三区 | 亚洲综合色小说 | 国内精品久久久久久久影视简单 | 日韩欧美精品一区二区 | 美国成人免费视频 | 欧美精选一区二区 | 亚洲A∨无码国产精品 | 国产一区视频在线免费观看 | 国产精品av免费观看 | 一本久道久久 | 亚洲人成人无码网www国产 | 91蜜桃在线 | 国产性猛交xxxx免费看久久 | 91日批| 日本一二三不卡 | 日韩一区二区三区在线免费观看 | 91天天射 | 老司机午夜av | 伊人春色网| 4438激情网 | 六月丁香婷婷网 | 97xxxx| 蜜臀一区| 精品国产一区二区在线 | 另类av小说| 麻豆久久久久久 | 国产天堂资源 | 国产真实老熟女无套内射 | 6080亚洲精品一区二区 | 黄色片特级 | 日韩乱码一区二区 | 亚洲男性天堂 | 中文字幕自拍 | 亚洲国产va | 日日夜夜爱爱 | 欧美成人一区二区 | 午夜精品在线视频 | 亚洲激情一区 | 欧美精品999| 国产调教视频在线观看 | 九色视频网 |