成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Android 指定網(wǎng)絡(luò)接口收發(fā) Socket 數(shù)據(jù)

wangbinke / 1381人閱讀

摘要:用于標(biāo)識(shí)所在多播組的本地接口。其中都是網(wǎng)絡(luò)接口的唯一標(biāo)識(shí)符號(hào)。運(yùn)行程序,通過(guò)抓包后顯示發(fā)送成功,并抓到了返回?cái)?shù)據(jù)黑色標(biāo)記行為發(fā)送數(shù)據(jù),橙色標(biāo)記行為接收數(shù)據(jù)。

上次寫(xiě)了一篇 Android Ping IPv6 地址的教程,這個(gè)工作的目的就是想通過(guò) Volte 網(wǎng)絡(luò)發(fā)送 SIP 消息。但是 Android 默認(rèn)的網(wǎng)絡(luò)環(huán)境是 Wifi、2G/3G/4G, 不會(huì)默認(rèn)通過(guò) Volte 網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。因此需要通過(guò)一些方法來(lái)指定網(wǎng)絡(luò)接口。

指定網(wǎng)絡(luò)接口

首先介紹下 NetworkInterface 這個(gè)類

NetworkInterface 這個(gè)類表示由名稱組成的網(wǎng)絡(luò)接口和分配給這些網(wǎng)絡(luò)接口的 IP 地址列表。用于標(biāo)識(shí)所在多播組的本地接口。

因此,Android 獲取所有網(wǎng)絡(luò)接口就可以通過(guò) NetworkInterface 的 getNetworkInterfaces() 、 getInetAddress() 這個(gè)方法來(lái)實(shí)現(xiàn)

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

getInetAddress() 方法返回綁定某個(gè)網(wǎng)絡(luò)接口下的所有 IP 地址。

NetworkInterface.getNetworkInterfaces() 在調(diào)試中顯示的結(jié)果如下

圖中可以看出所有的網(wǎng)口列表,展開(kāi)第一個(gè)顯示了它的一些屬性。其中 name 、 interfaceIndex 都是網(wǎng)絡(luò)接口的唯一標(biāo)識(shí)符號(hào)。
此時(shí),如果我們需要指定網(wǎng)絡(luò)接口,就可以根據(jù)它的屬性來(lái)][1]實(shí)現(xiàn)。

例子:獲取 rmnet_data7 網(wǎng)口的 IPv6 地址

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

運(yùn)行可以看到 log 中打印了 rmnet_data7 的 IP 地址

測(cè)試指定網(wǎng)口

接下來(lái)看看數(shù)據(jù)到底是不是通過(guò)這個(gè)網(wǎng)絡(luò)接口發(fā)送出去了。
我通過(guò)代碼建立了一個(gè) TCP 連接,然后發(fā)送數(shù)據(jù)給 SIP 服務(wù)器,由于這不是重點(diǎn),我就不貼代碼了。
運(yùn)行程序,通過(guò) tcpdump 抓包后顯示發(fā)送成功,并抓到了返回?cái)?shù)據(jù)

黑色標(biāo)記行為發(fā)送數(shù)據(jù), 橙色標(biāo)記行為接收數(shù)據(jù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70034.html

相關(guān)文章

  • PHP 網(wǎng)絡(luò)編程小白系列 —— Socket 編程入門

    摘要:在這個(gè)時(shí)刻,服務(wù)程序被驚醒并且為客戶提供服務(wù)對(duì)客戶的請(qǐng)求作出適當(dāng)?shù)姆磻?yīng)。為了方便這種模型的網(wǎng)絡(luò)編程,年代初,由聯(lián)合了其他幾家公司共同制定了一套下的網(wǎng)絡(luò)編程接口,即規(guī)范,它不是一種網(wǎng)絡(luò)協(xié)議而是一套開(kāi)放的支持多種協(xié)議的下的網(wǎng)絡(luò)編程接口。 這篇文章將會(huì)介紹一下 Socket 編程中相關(guān)的 PHP 函數(shù),并簡(jiǎn)單實(shí)現(xiàn)一個(gè) C/S 的交互 Socket 簡(jiǎn)介 Socket 的官方解釋:在網(wǎng)絡(luò)編程中...

    DevWiki 評(píng)論0 收藏0
  • TCP 協(xié)議簡(jiǎn)單說(shuō)明

    摘要:網(wǎng)絡(luò)層負(fù)責(zé)數(shù)據(jù)報(bào)的傳輸功能,相關(guān)的重要協(xié)議如協(xié)議等,它的傳送靠網(wǎng)卡驅(qū)動(dòng)程序來(lái)提供。 本文章簡(jiǎn)要的說(shuō)明該協(xié)議的大概內(nèi)容,具體請(qǐng)百度哦! TCP協(xié)議分為四層【有的分七層】 圖片來(lái)源于德州儀器網(wǎng)卡芯片的datasheetshowImg(https://segmentfault.com/img/bVbtOPJ?w=728&h=421); showImg(https://segmen...

    cfanr 評(píng)論0 收藏0
  • 如何通過(guò)命令行工具去理解網(wǎng)絡(luò)協(xié)議

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

    I_Am 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<