TOGOUTECH

c++ - 以太网信息

coder 2024-06-13 原文

好吧,我在 MSDN 上查看了这方面的内容,只找到了这个:GetAdaptersAddresses

我想要获取的是以太网信息,例如描述、发送的字节数、接收的字节数、带宽、延迟等。这可能吗?

最佳答案

您可以使用 GetIfTable2 获得大部分内容和 GetIfEntry2 .如果您需要与 XP 和更早版本的兼容性,您需要查看 GetIfTableGetIfEntry反而。 *2 函数提供了更多信息,但仅适用于 Vista 和更新版本。

不过,我认为两者都不会显示延迟——因为您非常需要进行一些测量。同样,带宽将只是适配器的额定带宽(例如,100 Mb/s 或 1000 Mb/s),而不是您在与任何特定主机通信时必然期望的带宽。

编辑:这是我手边的一些代码,应该显示如何使用这些函数的一般概念:

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

int main() { 

    MIB_IFTABLE *interfaces;
    unsigned long size = 0;
    int i, j;

    GetIfTable(interfaces, &size, FALSE);

    interfaces = (MIB_IFTABLE *)malloc(size);

    GetIfTable(interfaces, &size, TRUE);

    for (i=0; i<interfaces->dwNumEntries; i++) {
        MIB_IFROW &xf = interfaces->table[i];

        printf("%s\n\t", xf.bDescr);
        for (j=0; j<xf.dwPhysAddrLen; j++) {
            printf("%2.2X", xf.bPhysAddr[j]);
            if ( j!= xf.dwPhysAddrLen-1)
                printf(":");
        }
        printf("\n");
        switch(xf.dwType) {
        case MIB_IF_TYPE_ETHERNET:
            printf("Ethernet");
            break;
        case MIB_IF_TYPE_FDDI:
            printf("FDDI");
            break;
        case MIB_IF_TYPE_TOKENRING:
            printf("Token Ring");
            break;
        case MIB_IF_TYPE_LOOPBACK:
            printf("Loopback adapter");
            break;
        case MIB_IF_TYPE_OTHER:
            printf("Other");
            break;
        }
        printf("\n");
    }
    return 0;
}

关于c++ - 以太网信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5022757/

有关c++ - 以太网信息的更多相关文章

  1. javascript - Javascript 中的 FizzBu​​zz 程序(已给出详细信息) - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭1年前。Improvethisquestion有人可以为FizzBu​​zz更正我的这段代码吗?似乎有一个小错误。下面的代码打印所有数字,而不是仅打印不能被3或5整除的数字。Writeaprogramthatprintsthenumbersfrom1to100.Butformultiplesofthree,print"Fizz"insteadofthenumber,andforthemultiplesoffive,print"

  2. javascript - 从谷歌地图信息窗口中删除关闭图标 - 2

    如何删除谷歌地图中信息窗口的关闭图标。我试图删除此图标,但找不到它的ID或类。那么谁能帮我从信息窗口中删除关闭图标? 最佳答案 您可以使用CSS隐藏关闭按钮:.gm-style-iw+div{display:none;} 关于javascript-从谷歌地图信息窗口中删除关闭图标,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/20544932/

  3. javascript - 如何在 node.js 中获取有关客户端的信息 - 2

    在这个非常简单的例子中:varsys=require("sys"),http=require("http");http.createServer(function(request,response){response.writeHead(200,{"Content-Type":"text/plain"});response.end("HelloWorld!");}).listen(8080);sys.puts("Serverrunningathttp://localhost:8080/");

  4. javascript - 添加到 HTML 表单而不丢失 Javascript 中的当前表单输入信息 - 2

    我有一个下拉列表,它根据所选择的选项构建一个表单。因此,如果有人选择“foobar”,它会显示一个文本字段,如果他们选择“cheese”,它会显示单选按钮。然后,用户可以在这些表格中输入数据。唯一的问题是,当他们添加一个新的表单元素时,所有其他信息都会被删除。我目前正在使用以下方法添加到表单中:document.getElementById('theform_div').innerHTML=document.getElementById('theform_div').innerHTML+'thisisthenewstuff';我怎样才能让

  5. javascript - 谷歌地图信息框位置 - 2

    我已经用谷歌搜索这个问题一段时间了,但我得到的只是头疼。我在我的谷歌地图上添加了带有信息框的谷歌标记,但信息框位于标记下方,但我真的很感激它位于标记上方。有谁知道怎么做吗?请不要将某些链接指向某个地方,我今天看到它已经很久了。提前谢谢你。 最佳答案 将信息框的alignBottom属性设置为true(默认为false)。要进一步调整位置,请使用信息框的pixelOffset属性 关于javascript-谷歌地图信息框位置,我们在StackOverflow上找到一个类似的问题:

  6. Javascript CustomEvent 详细信息未通过 - 2

    我正在尝试创建自定义Javascript事件。该事件正常运行并触发,但我传递给它的“详细信息”对象不可用。这是我用来创建和发送事件的代码:vardouble_tap=newCustomEvent("doubleTap",{detail:{hello:'world'},bubbles:true,cancelable:true});this.dispatchEvent(double_tap);然后我使用jQuery向正文添加一个事件监听器:$('body').on('doubleTap',function(e){console

  7. c# - 在 asp.net 中通过 javascript alert 显示异常信息 - 2

    我正在尝试通过javascript警告框显示异常消息。这是示例代码。publicstaticvoidHandleException(Pagepage,Exceptionex){stringmessage=ex.Message.ToString();ScriptManager.RegisterClientScriptBlock(page,page.GetType(),"","alert('"+message+"');",true);}如果我为字符串变量提供文字值,它就会运行。例如stringmessage="Hell

  8. javascript - 停留在启动 JS 服务器的信息上 - 2

    我已经成功启动了一个新的react-native项目。然后,每次我尝试使用命令react-nativerun-android运行我新建的项目时,它卡在infoStartingJSserver...上.这是输出:$react-nativerun-androidinfoRunningjetifiertomigratelibrariestoAndroidX".Youcandisableitusing"--no-jetifier"flag.Jetifierfound855file(s)toforward-jetify.Using4workers...infoStarti

  9. javascript - 右侧的谷歌地图信息窗口位置 - 2

    如何在左侧而不是底部显示带箭头的InfoWindow?screenshotexamplehere 最佳答案 现在已经有一段时间了,您可能确实对这个话题产生了兴趣。但我要说的是,不使用任何第三方工具也是可能的...只需将pixelOffset添加到infowindow中,如下所示:varinfowindow=newgoogle.maps.InfoWindow({content:"Mycustominfowindow",pixelOffset:newgoogle.maps.Size(250,150)});此外,您也可以旋

  10. javascript - 使用 Google map 标记更改信息窗口中的数据 - 2

    我关注了thistutorial创建自定义Googlemap。我已经包括了一些其他元素,例如将其链接到Wordpress和对标记进行聚类。除了每个标记上的信息窗口中的信息外,一切都很好用。我似乎无法更改每一个中的信息。我认为通过更改以下行它会改变它但没有任何影响:varhtml="<b>"+name+"</b><br/>"+address;Thisistheworkingmap我在哪里可以将自己的自定义数据放入窗口中?另外,如果我可以在上面设置窗口样式,那就更好了。看来集群器是问题所在,主要是这一部分,我如何获取htm

随机推荐

  1. javascript - IHttpPromise 使用 TypeScript 2.5 错误地扩展了 IPromise - 2

    我开始使用Typescript2.5,现在我在Angulartypescript定义文件中收到以下代码消息:interfaceIHttpPromise<T>extendsIPromise<T>{success(callback:IHttpPromiseCallback<T>):IHttpPromise<T>;error(callback:IHttpPromiseCallback<any>):IHttpPromise<T>;then<TResult>(successCallback:(response:I

  2. javascript - react : Where To Extend Object Prototype - 2

    我使用create-react-app创建了一个纯React应用程序.我想扩展String类并在一个或多个组件中使用它。例如:String.prototype.someFunction=function(){//somecode}(您可能想查看thisquestion以了解有关扩展对象原型(prototype)的更多信息。)是的,我可以在组件旁边定义它并在其中使用它。但是最好和最干净的方法是什么?我应该把它写成classmethod或在componentDidMount内或者是其他东西?编辑:在React(或JavaScript)中扩展对象原型(prototype)甚至“可以”吗?

  3. javascript - Cypress :设置属性值 - 2

    我刚刚开始探索Cypress并遇到了这样一个问题:是否可以在JavascriptExecutor的帮助下选择一个具体的属性并像在Selenium中那样更改它的值?例如让我们以这段简单的代码为例inputid="mapsearch"type="textbox"class="form-control"name="address"test=""是否可以获取测试属性并分配我自己的值? 最佳答案 是的。您可以在JavaScript中做的任何事情都可以在Cypres

  4. javascript - 以 Angular 延迟调用 keyup 事件 - 2

    我有文本框并为其分配了keyup事件搜索功能,但我希望它延迟发生,而不是在每次按键时发生这是html代码:<inputtype="text"[(ngModel)]="searchedKPI"(keyup)="searchConfigTree()">这里是ts代码:list=list.filter(item=>item.label.toLocaleLowerCase().includes(this.searchedKPI.toLocaleLowerCase())).slice();这是我想搜索“文本”字符串的示例,但事件发

  5. javascript - 使用 ES6 导入加载特定名称是否比导入命名空间更快? - 2

    例如,我发现至少有两种方法可以从像Ramda这样的模块中导入函数。可能还有更多方法可以做一些非常相似的事情,比如constR=require('ramda');选项1是导入某些函数:import{cond,T,always,curry,compose}from'ramda';选项2是像这样导入整个模块:import*asRfrom"ramda";我更愿意像这样引用调用函数的模块:R.T();但是如果使用第二个选项,它是否会引入每个Ramda函数,而不仅仅是我正在使用的模块中使用的函数?如果使用选项2,就发送到浏览器的内容而言,是否对实际内存使用或带宽使用

  6. javascript - vscode : [ts] Experimental support for decorators is a feature that is subject to change - 2

    我得到“[ts]对装饰器的实验性支持是一项功能,在未来的版本中可能会发生变化。设置'experimentalDecorators'选项以删除此警告。”我是Angular的新手,我不知道如何解决它。我的tsconfig.json文件:{"compilerOptions":{"allowSyntheticDefaultImports":true,"declaration":false,"emitDecoratorMetadata":true,"experimentalDecorators":true,"

  7. javascript - 使用 'let'的不同形式 - 2

    我看到一个JavaScriptES6教程,其中那个人使用这种语法通过let赋值:let=name=['Jhon','Paul','Ean']第一个和这个有什么区别:letname=['Jhon','Paul','Ean'] 最佳答案 第一个是创建两个全局变量:let和name,以及首先将数组分配给name,然后分配给let。这不是什么你肯定想要。第二个创建一个名为name的block作用域局部变量。这个就是你想要的!

  8. javascript - react FlatList renderItem - 2

    我以前在JS中见过这种语法,我只是好奇它是如何工作的。在ReactNativeDocsforFlatList,一个示例调用renderItem。this._renderItem如何知道它正在处理哪个单独的列表项?看起来item正在被解构,但是来自什么对象?_renderItem=({item})=>(<MyListItemid={item.id}onPressItem={this._onPressItem}selected={!!this.state.selected.get(item.id)}title={item.title}/>);render(){return

  9. javascript - 如何断言一个函数是从另一个函数中调用的? - 2

    我在React中有一个带有onChange事件的组件。在下面的代码中,我需要断言调用了正确的方法this.props.onChangeImage()在Gallery组件中调用。exportclassFormextendsReact.PureComponent{componentDidMount=()=>{this.props.getUser();this.props.getImages();this.props.getBoards();}render(){if(this.props.pin===null){letboards=[];boards=this.props.boards

  10. javascript - 在 2017 年使用 Meteor 有充分的理由吗? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion几年前,Meteor应该会彻底改变节点上的Web开发,使编写引人注目的响应式(Reactive)应用程序变得容易。我不太熟悉该平台的历史,但我知道自去年以来,大部分开发工作都已撤回并转而从事其他项目。我正在尝试为我的下一个应用程序决定一个框架,所以我想知道Meteor是否仍然是一个可行的选择,而不是仅仅使用普通的node+react/angular/etc。这些是我到目前为止所经历的利弊: