国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Android 指定網絡接口收發 Socket 數據

wangbinke / 1370人閱讀

摘要:用于標識所在多播組的本地接口。其中都是網絡接口的唯一標識符號。運行程序,通過抓包后顯示發送成功,并抓到了返回數據黑色標記行為發送數據,橙色標記行為接收數據。

上次寫了一篇 Android Ping IPv6 地址的教程,這個工作的目的就是想通過 Volte 網絡發送 SIP 消息。但是 Android 默認的網絡環境是 Wifi、2G/3G/4G, 不會默認通過 Volte 網絡發送數據。因此需要通過一些方法來指定網絡接口。

指定網絡接口

首先介紹下 NetworkInterface 這個類

NetworkInterface 這個類表示由名稱組成的網絡接口和分配給這些網絡接口的 IP 地址列表。用于標識所在多播組的本地接口。

因此,Android 獲取所有網絡接口就可以通過 NetworkInterface 的 getNetworkInterfaces() 、 getInetAddress() 這個方法來實現

getNetworkInterfaces() 方法返回本機上的所有接口。枚舉至少包含一個元素,可能只顯示了一個本地回環接口。

getInetAddress() 方法返回綁定某個網絡接口下的所有 IP 地址。

NetworkInterface.getNetworkInterfaces() 在調試中顯示的結果如下

圖中可以看出所有的網口列表,展開第一個顯示了它的一些屬性。其中 name 、 interfaceIndex 都是網絡接口的唯一標識符號。
此時,如果我們需要指定網絡接口,就可以根據它的屬性來][1]實現。

例子:獲取 rmnet_data7 網口的 IPv6 地址

// 獲取所有網口
List interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for(NetworkInterface iface : interfaces){
  if(iface.getDisplayName().equals("rmnet_data7")){ // 判斷網口名稱
    Enumeration nifAddresses = iface.getInetAddresses();
    // 遍歷 rmnet_data7 下所有 IP 地址
    while(nifAddresses.hasMoreElements()){
      InetAddress ni = nifAddresses.nextElement();
      Log.i("interface",ni.toString());
    }
  }
}

運行可以看到 log 中打印了 rmnet_data7 的 IP 地址

測試指定網口

接下來看看數據到底是不是通過這個網絡接口發送出去了。
我通過代碼建立了一個 TCP 連接,然后發送數據給 SIP 服務器,由于這不是重點,我就不貼代碼了。
運行程序,通過 tcpdump 抓包后顯示發送成功,并抓到了返回數據

黑色標記行為發送數據, 橙色標記行為接收數據。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70034.html

相關文章

  • PHP 網絡編程小白系列 —— Socket 編程入門

    摘要:在這個時刻,服務程序被驚醒并且為客戶提供服務對客戶的請求作出適當的反應。為了方便這種模型的網絡編程,年代初,由聯合了其他幾家公司共同制定了一套下的網絡編程接口,即規范,它不是一種網絡協議而是一套開放的支持多種協議的下的網絡編程接口。 這篇文章將會介紹一下 Socket 編程中相關的 PHP 函數,并簡單實現一個 C/S 的交互 Socket 簡介 Socket 的官方解釋:在網絡編程中...

    DevWiki 評論0 收藏0
  • TCP 協議簡單說明

    摘要:網絡層負責數據報的傳輸功能,相關的重要協議如協議等,它的傳送靠網卡驅動程序來提供。 本文章簡要的說明該協議的大概內容,具體請百度哦! TCP協議分為四層【有的分七層】 圖片來源于德州儀器網卡芯片的datasheetshowImg(https://segmentfault.com/img/bVbtOPJ?w=728&h=421); showImg(https://segmen...

    cfanr 評論0 收藏0
  • 如何通過命令行工具去理解網絡協議

    摘要:收發兩端的對等層通過協議進行通信。以查詢的網卡信息為例網絡診斷助手命令工具命令采用的協議允許主機或路由器報告差錯情況和提供有關異常情況的報告。 TCP/IP網絡分層模型 showImg(http://charl-image.oss-cn-hangzhou.aliyuncs.com/cmd-know-network/model.png); TCP/IP五層模型將網絡功能五層。 每一層...

    I_Am 評論0 收藏0

發表評論

0條評論

wangbinke

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<