[精华]用Intel移动开发包做网络检测(Intel Mobile Platform Software Development Kit)(Windows XP* 的 C# 代码样本)

milex 2007-10-25 12:43:51
介绍
作者:Rajshree Chabukswar

学习如何使用 Intel® Mobile Platform SDK 获取网络设备信息。其中也包括用于 Windows XP* 的 C# 代码样本。

对于那些资源有限的移动应用,检测可用网络状态的能力是一项非常重要的因素,因为无线连接无法保证始终可用(有线网络有时也会出现无法使用的情况)。应用应具备确定网络设备当前状态的能力,并能在发生连接或断开连接时采取适当措施。例如:某移动平台超出了接入点设备(AP)的范围,或信号受阻。 Intel® Mobile Platform Software Development Kit (Intel® Mobile Platform SDK)(为开发人员)提供了一种通用框架,能够检索网络设备属性,并监控相应网络设备的当前状态。

本文论证了如何使用 Intel® Mobile Platform SDK 获取网络设备信息。同时也包括用于 Windows XP* 平台的 C# 代码样本。

Intel® Mobile Platform Software Development Kit
借助英特尔移动平台软件开发套件架构和设计,您能够实现如下目标:

1. 多架构 — 可用 32 位英特尔® 架构、英特尔® 迅驰™ 移动计算技术、Intel XScale® 技术,以及未来出现的其它技术。

2. 多操作系统 — 可在 Microsoft Windows XP、Microsoft Windows Mobile* 2003,以及未来出现的其它操作系统中运行。

3. 多语言 — 可以多种语言访问,如 C/C++、Java*、.Net*(C#、Visual Basic*),以及通用语言运行时(CLR)语言。

4. 多运行时 — C 运行时、.NET、CLR,以及 Java 运行时环境所具备的功能:Java 2 Micro Edition*(J2ME)、Java 2 Standard Edition*(J2SE),及 Java 2 Enterprise Edition*(J2EE)。

5. 多语法 — 支持面向对象及面向过程语法调用。

网络状态工具描述
本文所讨论的样本论证了如何使用 英特尔移动平台软件开发套件 检索系统中所有网络设备的当前信息,以及如何在运行时跟踪任意网络状态的变化。

目标平台―运行Windows XP Professional操作系统的英特尔® 迅驰™ 移动计算技术笔记本电脑。下图所示代码样本由 C# 开发。





图1:网络断开时的用户界面(UI)
样本工具用户界面(UI)如图 1 所示。该选项卡显示了相关网卡及链路协议信息。Events(事件)选项卡跟踪运行时网络连接/网络断开连接状态的变化。网络事件触发时,所有选项卡的详细信息均自动更新。

如图 1 所示,WiredAdapter(有线网卡)和 RadioAdapter(无线网卡)处于 MediaDisconected(断开)状态。当(活动)网线与系统相连时,“mediaConnect”(连接)事件被激活,并记录到 “Events”(事件)选项卡中。如图 2 和 3 所示,网络“连接”状态自动发生变化。图 2 显示了添加到“Events”(事件)选项卡中的事件详细信息。



图2:网络在运行时连接时,事件被记录


图3:“mediaConnect”(连接)事件后、所更新的用户界面(UI)
...全文
130 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
treetor 2008-09-24
  • 打赏
  • 举报
回复
学习下
tomato_potato 2008-09-24
  • 打赏
  • 举报
回复
专门来做记号,慢慢研究
milex 2007-10-25
  • 打赏
  • 举报
回复
结论
此处所讨论的样本揭示了开发人员如何在无需持续轮询设备的情况下,借助 英特尔移动平台软件开发套件 ,实时检索网络信息并接收当前网络状态的更新情况。同样,您也可以使用 英特尔移动平台软件开发套件 检索功率和带宽信息。

更多参考
如欲了解更多信息,请访问:

* Intel® Mobile Platform Software Development Kit
* Intel® Mobile Platform Software Development Kit 免费评估版本



靠,CSDN的论坛总是不支持贴图,NND。

感兴趣的朋友,参见全文链接:http://intel.csdn.net/ISN_J.aspx?action=JMP&pointid=660
milex 2007-10-25
  • 打赏
  • 举报
回复
实施
英特尔移动平台软件开发套件 提供几种属性和 API,用以检索系统设备中的信息。

点击此处下载代码样本。

网卡和链路协议对象初始化操作:





对象一旦初始化,每个网卡和链路协议的属性即可按如下所示方式检索:

网卡

while(myCollectionNet.HasNext())
{
myInstance = (NetworkAdapterInstance)myCollectionNet.Next();
if (!myInstance.Name.IsNull())
{
val = myInstance.Name.GetValue();
str = "Name: "+val;
listBox1.Items.Add(str);
}
if (!myInstance.NetConnectionStatus.IsNull())
{
var = myInstance.NetConnectionStatus.GetValue();
val = var.ToString();
str = "NetConnectionStatus: " + val;
listBox1.Items.Add(str);
}
…………………
}


链路协议

while(myCollectionLink.HasNext())
{
myInstance = (LinkProtocolInstance)myCollectionLink.Next();
if (!myInstance.Id.IsNull())
{
val = myInstance.Id.GetValue();
str = "ID: " + val;
listBox3.Items.Add(str);
}
if (!myInstance.IpAddress.IsNull())
{
val = myInstance.IpAddress.GetValue();
str = "IP: " + val;
listBox3.Items.Add(str);
}
…………………
}


您可以使用相应的标签,将检索到的属性值添加到用户界面(UI)列表框中。

如欲了解有关网卡、链路协议属性及 API 方面的更多信息,请参考编程指南*(PDF 540KB)“网络设备”一节。该指南由 英特尔移动平台软件开发套件 发布。

事件通知

此例通过实现 MyConnectionState 类(Observer 类的派生)来侦听运行时所出现的链路协议 mediaConnect 和 mediaDisconnect 事件。

internal class MyConnectionState : Observer
{
public override void Notify(Event evnt)
{
try
{
if (evnt.GetType() == Event.EventType.eMediaConnect)
{
//Record Connect event in the list box.
}
if (evnt.GetType()==Event.EventType.eMediaDisconnect)
{
//Record Disconnect event in the list box.
}
}
catch (CIntelMobileException ex)
{
//Handle Exception.
}
}


在主类型构造函数(main class constructor)中,事件 observer 被添加到每个链路协议对象事件中。

LinkProtocolInstance[] LnkInstance = new LinkProtocolInstance[10];
MyConnectionState myConnection = new MyConnectionState();
//Populate LnkInstance with appropriate values when retrieving
//property values for each Link Protocol object.

for (int i = 1; i > count; i++)
{
LnkInstance[i].MediaConnect.AddObserver(myConnection);
LnkInstance[i].MediaDisconnect.AddObserver(myConnection);
}


通过执行这些步骤,observer 被添加到指定的事件(即此例中的“mediaConnect”(连接)和“mediaDisconnect”(断开))中。当这些事件出现时,开发人员将调用 MyConnectionState 类中的“Notify()”方法,并根据事件的具体情况采取相应措施。

在终止应用之前,开发人员必须移除 observer。如果开发人员未移除observer,则即使应用已经关闭,对其的引用仍存在。以下代码显示了如何移除引用:

for (int i = 1; i > count; i++)
{
LnkInstance[i].MediaConnect.RemoveObserver(myConnection);
LnkInstance[i].MediaDisconnect.RemoveObserver(myConnection);
}

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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