摘要:用于標(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ù)。
指定網(wǎng)絡(luò)接口上次寫(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ò)接口。
首先介紹下 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)口 Listinterfaces = 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
摘要:在這個(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ò)編程中...
摘要:網(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...
摘要:收發(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ò)功能五層。 每一層...
閱讀 3571·2021-11-16 11:45
閱讀 2130·2021-11-08 13:23
閱讀 2224·2021-10-11 10:59
閱讀 2901·2021-09-27 13:36
閱讀 2490·2019-08-30 15:54
閱讀 2680·2019-08-29 16:58
閱讀 2797·2019-08-29 16:56
閱讀 1348·2019-08-26 13:52