android上live555獲取IP為0.0.0.0的問題
live555在獲取IP失敗時,url中的IP地址為0.0.0.0,此時地址是不可用用的,需要解決這個問題可以修改live555的原始碼實現。具體可修改groupsock/GroupsockHelper.cpp
檔案,在netAddressBits ourIPAddress(UsageEnvironment& env)方法中修改如下方法加入自己的獲取ip方法,如本文通過修改加入了獲取android wlan0的ip地址。
1、檢視ip地址
首先通過shell命令檢視當前裝置的ip地址是否有效,如檢視wlan0網路節點的ip地址可以使用如下命令,其餘的網路卡類似處理:
busybox-smp ifconfig wlan0| grep 'inet addr'|busybox-smp awk -F ":" '{print $2}'|busybox-smp awk '{print $1}'
2、新增程式碼
在groupsock/GroupsockHelper.cpp檔案中找到netAddressBits ourIPAddress(UsageEnvironment& env)方法。在如下程式碼前加入自己查詢ip的程式碼:
// Make sure we have a good address:
netAddressBits from = fromAddr.sin_addr.s_addr;
if (badAddressForUs(from)) {
char tmp[100];
sprintf(tmp, "This computer has an invalid IP address: %s", AddressString(from).val());
env.setResultMsg(tmp);
from = 0;
}
加入的程式碼如下:
if (badAddressForUs(fromAddr.sin_addr.s_addr))
{
#define TMP_BUF_LEN 32
char tIpBuf[TMP_BUF_LEN]={0};
FILE *fpRead = NULL;
//get wlan0's ipaddr.
char* command = (char*)"busybox-smp ifconfig wlan0| grep 'inet addr'|busybox-smp awk -F \":\" '{print $2}'|busybox-smp awk '{print $1}'";
char* renewCh = NULL;
fpRead = popen(command, "r");
if(NULL != fpRead) {
fgets(tIpBuf, TMP_BUF_LEN, fpRead);
pclose(fpRead);
renewCh = strstr(tIpBuf,"\r");
if(renewCh) {
*renewCh='\0';
}
renewCh = strstr(tIpBuf,"\n");
if(renewCh) {
*renewCh= '\0';
}
fromAddr.sin_addr.s_addr=our_inet_addr(tIpBuf);
}
}
上述程式碼表示在嘗試之前的兩種獲取IP地址的方法後如果獲取到的ip地址仍然不可用,那麼就使用shell指令碼獲取有效的ip地址資訊。
相關文章
- android獲取手機ipAndroid
- 通過nginx中轉獲取不到IP的問題解決Nginx
- ip 地址 127.0.0.1 和 0.0.0.0 的區別127.0.0.1
- android 獲取裝置IP和Mac地址AndroidMac
- 獲取在oracleasmlib上emc儲存的多路徑問題OracleASM
- android獲取位置並上傳Android
- Android學習筆記---關於獲取極光IDgetRegistrationID為空的問題Android筆記
- php 獲取IPPHP
- 如何獲取外網IP和IP的資訊
- 關於filter獲取session的問題!!!FilterSession
- SpringMVC的資料獲取問題SpringMVC
- saltstack獲取IP地址
- 獲取IP地址方法
- 獲取網路卡 IP
- 獲取IP地址命令
- Android手機怎麼獲取印表機的IP地址呢Android
- 獲取使用者訪問網站的IP來源網站
- React獲取資料,假如為陣列,使用map出現的問題React陣列
- 解決Android通過BitmapFactory獲取圖片寬高度相反的問題Android
- 關於海量資料的獲取問題
- java獲取本機的ip地址Java
- 獲取本地的IP地址(內網)內網
- DHCP獲取IP地址的過程
- Oracle獲取連線的IP地址Oracle
- 7個獲取訪問者真實IP的方法,速學!!!
- 獲取外網出口ip
- 美國ip地址如何獲取?
- Java獲取本機IPJava
- 根據ip獲取城市
- curl 獲取外網IP
- 獲取真實IP地址
- PHP獲取ip與ip所在城市PHP
- Java面試題-如何獲取客戶端真實IPJava面試題客戶端
- created mounted 動態獲取資料渲染後,獲取DOM問題
- victoriaMetrics無法獲取抓取target的問題
- js的getFullYear()和getYear()獲取年份問題JS
- 【Python】獲取主機ip的方式Python
- 獲取使用者的真實ip