科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VC编程轻松获取局域网连接通知

VC编程轻松获取局域网连接通知

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在局域网共享一条电话线的情况下,当服务器拨号上网时能及时通知各客户端通过代理服务器进行上网

作者:信息产业部电子第二十二研究所青 来源:yesky 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
三、必要的完善

  前面只是介绍了程序设计的整体框架和设计思路,仅仅是一个雏形,有许多重要的细节没有完善,不能用于实际使用。下面就对一些完全必要的细节做适当的完善:

  (一) 界面的隐藏

  由于本程序系自动检测、自动通知,完全不需要人工干预,因此可以将其视为后台运行的服务程序,因此程序主界面现在已无存在的必要,可以在应用程序类的初始化实例函数InitInstance()中将ShowWindow();的参数SW_SHOW改成SW_HIDE即可。当需要有对话框弹出通知用户时仅对话框出现,主界面仍隐藏,因此是完全可行的。

  (二) 自启动的实现

  由于服务端软件需要时刻监视有无进行拨号连接,所以必须具备自启动的特性。而客户端软件由于接收消息和通知客户都可以自动完成,因此如果能具备自启动特性则可以完全脱离用户的干预而取得较高的自动化程度。设置自启动的特性,可以从以下几个途径加以考虑:

  1. 在"启动"菜单上添加指向程序的快捷方式。
  
  2. 在Autoexec.bat中添加启动程序的命令行。

  3. 在Win.ini中的[windows]节的run项目后添加程序路径。

  4. 修改注册表,添加键值的具体路径为:

"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"

  并将添加的键值修改为程序的存放路径即可。以上几种方法既可以手工添加,也可以通过编程使之自动完成。

  (三) 自动续联

  对于服务/客户模式的网络通讯程序普遍要求服务端要先于客户端运行,而本系统的客户、服务端均为自启动,不能保证服务器先于客户机启动,而且本系统要求只要客户机和服务器连接在网络上就要不间断保持连接,因此需要使客户和服务端都要具备自动续联的功能。

  对于服务器端,当客户端断开时,需要关闭当前的套接字,并重新启动一个新的套接字以等待客户机的再次连接。这可以放在FD_CLOSE事件对应的消息WM_SOCKET_MSG的消息响应函数中来完成。而对于客户端,如果先于服务器而启动,则connect()函数将返回失败,因此可以在程序启动时用SetTimer()设置一个定时器,每隔一段时间(10秒)就试图连接服务器一次,当connect()函数返回成功即服务器已启动并与之连接上之后可以用KillTimer()函数将定时器关闭。另外当服务器关闭时需要再次开启定时器,以确保当服务器再次运行时能与之建立连接,可以通过响应FD_CLOSE事件来捕获该事件的发生。

  小结:本文通过Windows Sockets API实现了基于TCP/IP协议的面向连接的流式套接字的网络通讯程序的设计,通过网络通讯程序的支持可以把服务器捕获到的拨号连接发生的事件及时通知给客户端,最后通过对一些必要的细节的完善很好解决了在局域网上能及时得到服务器拨号连接的消息通知。本文所述程序在Windows 98 SE下,由Microsoft Visual C++ 6.0编译通过;使用的代理服务器软件为WinGate 4.3.0;上网方式为拨号上网。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章