如何编程得到网络的带宽?

cwanter 2003-03-30 12:38:21
如题
...全文
105 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gargamel 2003-03-31
  • 打赏
  • 举报
回复
如果想得到本机的网络连接带宽(速度),98以上系统可使用IP助手函数
GetAdaptersInfo()

GetIfTable()可以从操作系统维护的MIB库中读出本机各个接口的当前信息,如接口数目、类型、速率、物理地址、接收/发送字节数、错语字节数等等等等。

根据接口类型可以推断出接口的种类,如MIB_IF_TYPE_ETHERNET是指以太网口,MIB_IF_TYPE_TOKENRING是指令牌环网类型等等。而modem使用PPP协议接入网络,对应接口类型为MIB_IF_TYPE_PPP (值为23)。

在程序中你读出本机所有接口的信息后,可以根据接口类型推断出该接口是否是指modem/Ethernet接口,接口速率即为你所想知道的网络的连接速率。

以下是我写的一个小例子,示范getiftable()的用法,列举本机当前所有接口的类型及速率及索引号。

如有不周之处,请各位指出。


// GetIfTable.cpp
// A sample try to get the speed of a modem by using GetIfTable() func



#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>

#pragma comment ( lib, "iphlpapi.lib" )



int main( void )
{
MIB_IFTABLE *pIfTable = NULL;
ULONG dwSize = 0;

DWORD dwRet;

printf( "This program try to get the speed of a modem by using GetIfTable()\n" );

dwRet = GetIfTable( pIfTable, &dwSize, TRUE );
if ( dwRet == ERROR_INSUFFICIENT_BUFFER )
{
pIfTable = ( MIB_IFTABLE * ) new char[dwSize];

if ( pIfTable != NULL )
{
dwRet = GetIfTable( pIfTable, &dwSize, TRUE );
if ( dwRet == NO_ERROR )
{
printf( "dwNumEntries = %u\n", pIfTable->dwNumEntries );

for ( int i=0; i<pIfTable->dwNumEntries; i++ )
{
printf( "table[%1d].dwIndex = %u\n",
i,
(pIfTable->table[i]).dwIndex );
printf( " dwType = %u\n",
(pIfTable->table[i]).dwType );
printf( " dwSpeed = %u\n",
(pIfTable->table[i]).dwSpeed );
}
}
else
{
printf( "Some error occured!\n" );
}
}
else
{
printf( "Memory allocate failue\n" );
}
}
else
{
printf( "Some error occured!\n" );
}


return 0;
}

jemmylau 2003-03-31
  • 打赏
  • 举报
回复
应该是指上网速度,对吧?
jemmylau 2003-03-31
  • 打赏
  • 举报
回复
如何得到拨号网络传输速度

http://my.li3.net/gym/jiqiao/VC/netware/68.txt
prettywolf 2003-03-30
  • 打赏
  • 举报
回复
什么带宽?
你的MODEM连到电信?
由于上网方式不同,要设计通用的比较难。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧