在Windows Mobile设备上,连接管理器是一个关键的组件,它负责集中管理和自动化建立多种类型的网络连接。这些连接可以是针对互联网或企业网络的连接。当一个或多个应用程序请求连接时,连接管理器会选择最佳的连接类型,并通知所有应用程序连接已经激活。应用程序需要配置连接名称和网络名称。
连接管理器跟踪应用程序正在使用或请求的连接。它关闭未使用的连接,自动断开空闲一定时间的连接,并关闭低优先级的连接以打开高优先级的连接。例如,语音连接通常比数据连接具有更高的优先级。
连接管理器能够处理多种不同类型的连接,包括点对点协议(PPP)、远程访问服务(RAS)和点对点隧道协议(PPTP)连接。它还可以配置代理服务器设置,以允许网络资源通过防火墙或无线应用协议(WAP)网关。
这个应用程序块由微软的模式与实践小组提供。它允许应用程序从移动设备检索连接信息并监控连接状态的变化。
连接管理器API包含大约11个函数,但通常只需要两个函数来了解连接状态。
这个应用程序块提供了托管API,用于从移动设备建立或释放连接。它弥补了托管代码中的空白,使用户能够管理自己的连接。
连接管理器API包含大约11个函数,但通常只需要六个函数来建立和释放网络连接。在许多情况下,应用程序可能只需要两个函数。
CMConsole是示例代码,展示了用户如何使用连接监视器和连接管理器应用程序块。这部分连接监视器示例由微软模式与实践小组提供,并已增强,以展示如何使用连接管理器应用程序块建立连接。
控制台屏幕显示了在app.config中定义的不同连接:蜂窝连接、NIC连接和桌面连接。
public ConsoleForm()
{
InitializeComponent();
monitor = ConnectionMonitorFactory.CreateFromConfiguration();
monitor.ActiveNetworkChanged += NetworkChangeHandler;
}
ConnectionMonitorFactory.CreateFromConfiguration()返回一个ConnectionMonitor对象,该对象跟踪配置文件中指定的各种连接的状态。
private void mnuConnect_Click(object sender, EventArgs e)
{
const int CONNMONITOR_STATUS_CONNECTED = 0x10;
ConnectionMonitorNativeHelper.CONNMONITOR_CONNECTION_DETAILED_STATUS cnStatus =
cnList[lstConnection.SelectedIndex];
if (_connectionHandle != IntPtr.Zero)
{
ConnMgrReleaseConnection(_connectionHandle, 0);
_connectionHandle = IntPtr.Zero;
}
if (cnStatus.dwConnectionStatus != CONNMONITOR_STATUS_CONNECTED)
{
ConnMgrStatus status = ConnMgrStatus.Unknown;
Guid forceConnGuid = new Guid();
if (ConnMgrMapConRef(ConnMgrConRefTypeEnum.ConRefType_NAP,
cnStatus.pszDescription,
ref forceConnGuid) != 0)
{
ConnMgrMapConRef(ConnMgrConRefTypeEnum.ConRefType_PROXY,
cnStatus.pszDescription,
ref forceConnGuid);
}
ConnMgrConnectionInfo info = new ConnMgrConnectionInfo(forceConnGuid,
ConnMgrPriority.HighPriorityBackground);
ConnMgrEstablishConnectionSync(info,
ref _connectionHandle,
_syncConnectTimeout,
ref status);
if (status == ConnMgrStatus.Connected)
MessageBox.Show("Connect Succeeded");
else
MessageBox.Show("Connect failed: " + status.ToString());
}
}