在PPC的开发中有时需要判断网络什么时候连接,什么时候断开,并且做出相应的处理。比如说TimeSyncPPC程序,就需要在网络连接之后得到消息然
后去下载时间同步信息,因此就必须要一种方法让TimeSyncPPC程序在PPC连接网络之后得到系统的消息。当然有人说可以不断去轮询看系统是否连接
到网络了,但这绝对不是一个好方法。其实Windows Mobile
5.0之后微软已经提供了一个专门的函数来得到网络状态变化的Notification,我们要做的就是等待这个消息,函数如下:
HRESULT WINAPI ConnMgrRegisterForStatusChangeNotification(
BOOL fEnable,
HWND hWnd
);
这个函数是通知系统将网络状态变化的Notification发给指定的窗口,返回值有三个:
S_OK The function call was successful.
E_HANDLE The supplied window handle is invalid.
E_ACCESSDENIED The calling process does not have sufficient privileges to use this function.
当
网络连接或者断开时,ConnMgrRegisterForStatusChangeNotification函数会发送
CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG的消息给窗口,但是其实看
CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG的定义,它并不是一个消息,只是一个字符串:
#define CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG TEXT("CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG")
所以使用这个消息之前还需要注册这个消息:
m_ConnectMsg = RegisterWindowMessage(CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG);
返回值m_ConnectMsg就是传递到窗口的消息。
收
到CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG
的消息之后可以根据wParam来判断是断开还是连接上网络。测试发现,连接ActiveSync、GPRS(无论是cmwap或是cmnet)、
WIFI甚至打电话挂电话都会触发这个消息,在实际使用时还需要注意。
另外,微软的文档中有一个错误,经常把函数
ConnMgrRegisterForStatusChangeNotification错写成
ConnMgrRegisterForStatusNotification,所以如果看到
ConnMgrRegisterForStatusNotification这个函数,其实就是指的
ConnMgrRegisterForStatusChangeNotification函数。
下面是一个实际的例子,如有疑问请在www.17feixiang.com留言:
#include "connmgr_status.h"
#include "connmgr.h"
#pragma comment(lib,"wininet.lib")
#pragma comment(lib,"cellcore.lib")
UINT m_ConnectMsg;
BOOL CXXXXDlg::OnInitDialog()
{
......
HRESULT ret = ConnMgrRegisterForStatusChangeNotification(TRUE, this-〉m_hWnd);
m_ConnectMsg = RegisterWindowMessage(CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG);
return TRUE; // return TRUE unless you set the focus to a control
}
LRESULT CXXXXDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message == m_ConnectMsg)
{
switch(wParam)
{
case CONNMGR_STATUS_CONNECTED :
MessageBox(_T("Connected"));
break;
case CONNMGR_STATUS_DISCONNECTED :
MessageBox(_T("DISCONNECTED"));
break;
default :
break;
}
}
return CDialog::WindowProc(message, wParam, lParam);
}
分享到:
相关推荐
4. **处理网络事件**:连接过程中可能会遇到各种网络事件,如连接成功、断开、超时等,需要编写适当的错误处理和状态监控代码。 5. **保持连接**:在GPRS连接上维持会话可能需要处理网络中断和重连的情况。一旦连接...
在`NETCONN_TCP (UCOSIII)F750`这个文件中,我们可以找到具体的代码实现,包括UCOSIII实时操作系统对任务管理和资源调度的实现,以及lwIP如何在STM32F750上进行网络连接的配置和管理。分析这个文件将有助于深入理解...
首先,通过创建`Connection`对象并设置相关属性来判断网络中是否存在指定名称的服务器: ```powerbuilder connection myconnect myconnect = createconnection myconnect.driver = "WinSock" myconnect.application...
Windows操作系统提供了Wi-Fi管理API,也称为Native Wifi API,它允许开发者通过编程方式管理无线网络连接。这个API包含在`wlanapi.dll`动态链接库中,可以通过P/Invoke(平台调用)技术在C#中使用。 2. **添加P/...
考虑到WebSocket连接可能会占用较多资源,对于大量并发用户的情况,可能需要对连接池进行管理,或者使用服务端推送技术来减少客户端的连接数量。 以上就是在uni-app中实现H5和PC端WebSocket通信的关键点。在实际...
在IT行业中,Linux ARM平台与PC机之间的网络数据传输是一个重要的课题,特别是在嵌入式系统和物联网(IoT)领域。本项目通过Java语言实现,为ARM9处理器上的Linux系统和PC之间提供了一种文件传输机制。下面我们将深入...
在IT行业中,网络通信是至关重要的一个领域,特别是在嵌入式系统和PC机之间的交互。本文将详细讨论标题“TCP.zip_PC机与WINCE_tcp_wince 网络 tcp”所涉及的知识点,以及如何在局域网环境中,通过TCP/IP协议实现PC机...
这在监控网络连接的健康状况,比如是否已连接、连接速度等,或者在连接中断后重新建立连接时非常有用。通过实时获取连接状态,开发者可以及时响应网络变化,提供更好的用户体验。 ### ConnMgrEnumDestinations 此...
标题 "pctcp dos的软件包" 指的是一个专为DOS操作系统设计的网络连接工具,名为PCTCP。在个人计算机技术早期,DOS(Disk Operating System)是主流的操作系统,而PCTCP则是一个允许DOS系统通过TCP/IP协议进行网络...
在标签“软件”中,我们可以推断这是一个应用程序,可能是桌面应用或者是一款系统工具,它的主要功能是处理与网络连接相关的任务。这类软件通常包括但不限于以下功能:自动检测网络环境、创建网络配置文件、保存用户...
4. 网络连接监控:它能展示当前系统的所有网络连接,包括TCP和UDP连接,用户可以断开可疑的网络连接,防止信息泄露或黑客入侵。 5. 文件系统查看:工具能够查看硬盘上的文件和文件夹,包括系统隐藏文件,有助于识别...
5. **断开与管理**:用户可以在客户端界面中随时断开网络连接,或者查看网络状态和设置。 需要注意的是,由于iNode是特定环境下的网络接入工具,其使用效果和功能可能受到网络管理员的策略限制。此外,尽管这款工具...
例如,当连接断开时,Android应用和服务应尝试重新连接,或者向用户显示错误信息。PC端同样需要处理断开连接的情况,并可能需要提供一种机制来管理和释放资源。 此外,数据的序列化和反序列化也是通信过程中的关键...
5. 自动断开连接:计时结束,ConnectStar调用rasdial命令的断开功能,结束网络连接。 Java作为跨平台的编程语言,使得这款应用可以在任何安装有Java运行环境的Windows系统上运行。这为用户提供了便利,因为他们无需...
这个工具帮助用户通过蓝牙连接测试和优化设备之间的数据传输,尤其是在硬件开发、物联网(IoT)项目或者嵌入式系统开发中非常常见。 在描述中,“蓝牙调试助手 通信 PC电脑端 串口调试 bluetooth socket”提到了几个...
4. **网络连接管理**:显示所有活跃的网络连接,包括TCP和UDP连接,可以断开可疑的网络连接,防止信息泄露。 5. **驱动管理**:列出系统中已加载的驱动程序,用户可以禁用或卸载可疑驱动,防范驱动级别的攻击。 6....
当工业PC作为客户端时,需要编写特定的通信程序来与PLC建立连接,这与常规的PC间网络通信有所不同。通信的方式可以根据需求选择长连接或短连接,其中长连接更适合PLC的周期性工作模式,因为PLC通常采用循环扫描的...
2. TCP连接管理:建立连接、保持连接状态和断开连接。 3. 数据收发:使用阻塞或非阻塞模式读写数据,处理TCP的滑动窗口机制。 4. 错误处理:处理网络中断、超时和数据校验错误。 5. 协议栈的使用:理解并正确使用TCP...
例如,当PLC断开连接时,程序应能检测到这一情况,并尝试重新连接。此外,为了确保数据的一致性,每次写入操作前后,可以进行读取操作,检查PLC的实际输出状态是否与预期相符。 最后,不要忘记在程序结束时关闭与...
2. TCP连接管理:建立连接、保持连接状态和断开连接。 3. 数据收发:使用阻塞或非阻塞模式读写数据,处理TCP的滑动窗口机制。 4. 错误处理:处理网络中断、超时和数据校验错误。 5. 协议栈的使用:理解并正确使用TCP...