当前位置: 首页 > wzjs >正文

公司手机网站建设怎样做电影下载网站

公司手机网站建设,怎样做电影下载网站,如何管理手机网站首页,淘宝页面制作VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...&a…

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/125529931C++软件分析工具从入门到精通案例集锦(专栏文章正在更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/131405795C/C++基础与进阶(专栏文章,持续更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/category_11931267.html       我们可以通过调用系统API函数去获取机器上所有网卡的信息,可以获取到网卡上配置的IP、网关及DNS等信息。调用系统API可以获取最佳路由网卡,可以遍历系统路由表中的条目,可以看到默认路由和添加的策略路由。

1、获取系统中所有网卡的信息

      主要是通过调用系统API函数GetAdaptersInfo来获取网卡上配置的IP、网关、DNS等信息,相关代码如下:

// 获取所有网卡信息
void  GetNetAdaptersInfo
{// IP路由表ULONG               ulOutBufLen     = NULL;PMIB_IPFORWARDTABLE pIpForwardTable = NULL;GetIpForwardTable( pIpForwardTable, &ulOutBufLen, TRUE );pIpForwardTable = (PMIB_IPFORWARDTABLE)malloc( ulOutBufLen );if ( NULL != pIpForwardTable ){// 找到最佳路由,读出对应的IP索引if ( NO_ERROR == GetIpForwardTable( pIpForwardTable, &ulOutBufLen, FALSE ) ){}}DWORD dwRetVal = 0;PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );unsigned long ulOutBufLen = sizeof(IP_ADAPTER_INFO);// 试探以下buffer长度够不够if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS) {free(pAdapterInfo);pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen);}PIP_ADAPTER_INFO pAdapter = NULL;if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {int nIndex = 0;pAdapter = pAdapterInfo;while (pAdapter != NULL ) {// 1、读出网卡名称CString szAdapter;szAdapter.Format( _T("第%d块网卡:"), nIndex + 1);szAdapter += pAdapter->Description;// 2、网卡上所有IP信息IP_ADDR_STRING *pIPStr = &(pAdapter->IpAddressList);for(  ; pIPStr != NULL;  ){szAdapter += _T("\r\n");s8* byIpAddr = pIPStr->IpAddress.String;szAdapter += _T("IP: ");szAdapter += byIpAddr;szAdapter += _T("  ");szAdapter += STRING_MASK;s8 *byMaskAddr = pIPStr->IpMask.String;szAdapter += byMaskAddr;// 寻找IP对应的跳数for ( u32 dw = 0; dw < pIpForwardTable->dwNumEntries; dw++ ) {CString szRoute;IN_ADDR inDest;inDest.S_un.S_addr = pIpForwardTable->table[dw].dwForwardDest;if ( inet_ntoa( ntohl(inDest.S_un.S_addr) ) == (CString)byIpAddr ){        CString szMetric;szMetric = _T("  ");CString strTemp;strTemp.Format( _T("跳数:"), pIpForwardTable->table[dw].dwForwardMetric1 );szMetric += strTemp;szAdapter += szMetric;}}pIPStr = pIPStr->Next;}// 3、网卡上的网关信息IP_ADDR_STRING *pGatewayStr = &(pAdapter->GatewayList);for( ; pGatewayStr != NULL; ){szAdapter +=_T( " " );s8* byGwAddr = pGatewayStr->IpAddress.String;szAdapter += STRING_GATEWAY;szAdapter += byGwAddr;pGatewayStr = pGatewayStr->Next;}// 4、网卡上的DNS信息:TCHAR achDnsInfo[MAX_PATH] = {0};CString szSubKey = _T("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\");szSubKey += CopyUtf8ToCStringT( pAdapter->AdapterName );HKEY    hKey = NULL;LONG lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, (LPCTSTR)szSubKey,0, KEY_READ, &hKey );if ( lRet == ERROR_SUCCESS ){DWORD dwSize = MAX_PATH;DWORD dwType = REG_SZ;lRet = RegQueryValueEx( hKey, _T("NameServer"), NULL, &dwType,(LPBYTE)achDnsInfo, &dwSize );CString szDns;CString strDnsInfo = achDnsInfo;if ( _tcscmp( strDnsInfo, _T("") ) != 0 ){szDns.Format( _T("DNS服务器: %s"), strDnsInfo ); }szAdapter += szDns;RegCloseKey( hKey );			}pAdapter = pAdapter->Next;}}if ( pIpForwardTable != NULL ){free( pIpForwardTable );}if ( pAdapterInfo != NULL ){free( pAdapterInfo );}
}

 2、获取最佳路由网卡

       调用系统API函数GetBestInterface,传入要访问的目标IP,如下所示:

// 获取最佳路由对应的网卡索引号
DWORD dwResult = GetBestInterface(inet_addr(pDestIp), &dwBestIndex);

GetBestInterface函数返回后,返回的dwBestIndex值,就是最佳路由网卡的序号。

       获取最佳路由网卡,一般是用在多网卡的机器上,比如一张是连外网的网卡,一张是连局域网的网卡。在Windows系统中,不管插有多少张网卡,只能设置一个默认网关,即只能在一个网卡上设置网关,其他网卡不能设置网关。没设置网关的,可以通过添加策略路由去解决路由问题。

       有一点需要注意的是,系统选择的最佳路由可能是有问题的,比如我访问一个内网的地址,结果系统选择走外网的网卡,这就需要我们人为地去干预了。

3、遍历系统路由表,获取最佳路由

      在Windows系统中,可以在cmd中输入route print命令查看系统的路由表,如下所示:

我们可以通过调用系统API函数GetIpForwardTable去遍历路由表中的条目。比如如下的代码,代码中通过访问的目标地址,到路由表中找一个对应的路由:

// 传入要访问的目标IP,在路由表条目中找到最佳路由
BOOL FindBestRouteEntry( DWORD dwDestIp)
{PMIB_IPFORWARDTABLE pIpForwardTable = NULL;DWORD dwActualSize = 0;DWORD dwRst = NO_ERROR;// 获取系统路由表dwRst = ::GetIpForwardTable( pIpForwardTable, &dwActualSize, TRUE );if( NO_ERROR !=  dwRst){if ( ERROR_INSUFFICIENT_BUFFER == dwRst){pIpForwardTable = (PMIB_IPFORWARDTABLE)malloc(dwActualSize);if (NO_ERROR != GetIpForwardTable( pIpForwardTable, &dwActualSize, TRUE)){free(pIpForwardTable);return FALSE;}}else{return FALSE;}} else{assert(FALSE);}// 遍历系统路由表条目,根据目标地址确定使用哪条路由,然后获取该条路由// 对应的网关for(DWORD i = 0; i < pIpForwardTable->dwNumEntries; i++){DWORD dwForwardDest = pIpForwardTable->table[i].dwForwardDest;DWORD dwForwardMask = pIpForwardTable->table[i].dwForwardMask;DWORD dwForwardNextHop = pIpForwardTable->table[i].dwForwardNextHop;// 将0.0.0.0这条默认路由过滤掉if ( 0 == dwForwardMask ){continue;}// 判断目标IP地址与路由条目中的IP和子网掩码是否在同一子网中// 在一个子网中,则使用该路由条目if ( ( dwForwardDest & dwForwardMask ) == ( dwDestIp & dwForwardMask ) ) {dwDefaultGate = dwForwardNextHop;free(pIpForwardTable);return TRUE;}}free(pIpForwardTable);return FALSE;
}

对于人为添加的策略路由,也大概是通过上述代码的方法找到对应的策略路由的。 


文章转载自:

http://xPGvZ72p.gygjk.cn
http://au59LDjc.gygjk.cn
http://5ut2LoDO.gygjk.cn
http://AMMxHFOu.gygjk.cn
http://KD0fnGjw.gygjk.cn
http://kCvNqbEz.gygjk.cn
http://jf7K4zX4.gygjk.cn
http://Xy30UB2s.gygjk.cn
http://VvyddFpu.gygjk.cn
http://O8KaqfOi.gygjk.cn
http://39F9DRuS.gygjk.cn
http://7VZ5zGa0.gygjk.cn
http://18XViEl6.gygjk.cn
http://1z6eUFww.gygjk.cn
http://OQlbOCx3.gygjk.cn
http://IzXFzakw.gygjk.cn
http://e3TDKqwy.gygjk.cn
http://srolHShx.gygjk.cn
http://8Ac6jclb.gygjk.cn
http://oGl4J3jM.gygjk.cn
http://vx3WWAGP.gygjk.cn
http://a09J2WxE.gygjk.cn
http://AgB20CBn.gygjk.cn
http://Xb4kIZoY.gygjk.cn
http://NmirtPFX.gygjk.cn
http://R9pnWYxk.gygjk.cn
http://LAstcR1I.gygjk.cn
http://FfzZYgcy.gygjk.cn
http://HMVhJ979.gygjk.cn
http://ws6lFyip.gygjk.cn
http://www.dtcms.com/wzjs/724572.html

相关文章:

  • 深圳卓富通做网站酷家乐设计官网
  • 青岛通力建设集团网站关于建设网站的报告
  • 建筑工地网站网站策划制作公司
  • 做标书需要用到哪些网站查资料怀化网站制作
  • 西安网站建设公营销型网站建设的关键特点
  • 文明网站建设培训体会专业团队图片张伟
  • 视频网站后台登陆做vi的设计公司
  • 天津做网站的费用网站备案域名更改
  • 广州外贸网站公司国外网站ip地址
  • 快站优惠券29网站建设全部
  • 扬州高邮网站建设wordpress发布文章附件
  • 在线营销单页网站制作织梦网站描述
  • 做固定背景网站天元建设集团有限公司技术中心
  • 南昌住房建设局网站05网数学
  • 专门做食品的网站任丘建设网站制作
  • 赣州网站建设-赣州做网站中国建设招标网是个假网站
  • 10个网站 云主机需求专业零基础网站建设教学培训
  • 诸城网站开发关于网站开发的开题报告
  • 如何提升做网站的效率网站推广软件免费版
  • 宁波网络建站做店标 做店招的网站
  • 浦口区网站建站ftp网站建设
  • 怎么做企业官方网站新手怎么做网站打理
  • 江苏网站建设制作wordpress 插件安装失败
  • 二级目录怎么做网站徐州网站运营
  • 可口可乐网站建设唯美网站建设
  • 购物网站开发大纲湛江市建设规划局网站
  • 莱西大型网站建设不备案的网站能打开吗
  • 外贸企业网站推广方案大连企业网站模板建站
  • 网站后台无法访问百度网站源码优化检测
  • 泉州免费建站模板万网续费登录网站