目前基于Windows CE的产品大多数具有上网功能,能够连接到Internet实现浏览网页、收发邮件等基本功能。要实现更多的功能取决于连接Internet的速度,而速度取决于连接Internet的方式。连接Internet的方式分为两种:有线和无线。事实上大多数产品还是采用无线上网方式。
 
  基于Windows mobile的Pocket PC和Smart phone能够轻松实现上网功能。这两种产品的软件开发人员可以不必过多考虑如何实现拨号上网。而对于采用定制Windows CE内核的产品而言,相关的软件开发人员必须自己实现拨号上网。幸运的是Windows CE的SDK中包含了拨号上网的支持,使软件开发人员的工作大大减轻。

  拨号上网的硬件设备可以是独立的带内置调制解调器和具有GPRS功能的手机,也可以是嵌入到主板中带有同样功能的手机芯片。具体是什么并不重要,因为Windows CE包含的拨号上网模块采用标准的AT命令集与硬件设备通信。软件开发人员可以直接利用CE提供的接口函数来控制整个拨号过程,直到断开连接。

  Windows CE.NET 提供了一个被称为RAS(Remote Access Service)的服务,通过RAS基于Windows CE的产品可以通过WAN(广域网)或VPN(虚拟个人网络)连接到远程服务器上。调用RAS的应用程序通常在客户机上执行,通过电话网连接到远程服务器,这种连接使用两种标准的远程访问协议:PPP点对点协议和SLIP串行线路Internet协议。RAS结构如图1所示。从图中可以看出RAS处于ISO/OSI模型的上层,下层的TAPI(电话API)调用Unimodem,Unimodem是通用的调制解调器驱动程序,它调用串口API实现与调制解调设备的通信。


图1 RAS服务结构图

  Windows CE.NET下RAS所具备的所有功能同PC下的相似,同样支持电话本、拨号控制脚本。不同的是CE下的RAS的电话本是存放在注册表中。这些都是次要的功能,在此不给予讲述。实现拨号必须调用的函数如下:

函数 描述
RasDial 建立RAS连接
RasEnumEntries 列出注册表中所有拨号记录
RasGetConnectStatus 获得指定远程访问连接的当前状态。
RasGetEntryDialParams 获得指定的上次成功拨号记录的连接数据(参数)
RasSetEntryDialParams 设置指定的上次成功拨号记录的连接数据(参数)
RasGetEntryProperties 获得拨号记录属性
RasSetEntryProperties 设置拨号记录属性
RasHangUp 终止RAS连接

  基于Windows CE的产品在设计上有的能够在断电前保存注册表数据,有的不能够。对于不能够保存注册表数据的产品,采用电话本来拨号是行不通的。只能让用户每次启动后重新输入拨号数据,或者将数据保存到永久存储器上,在下一次拨号程序启动时先读取拨号数据。

  整个拨号状态分为同步和异步两种。同步状态下RasDial函数直到建立连接或者发生错误不能继续工作时才返回。同步模式的缺点是客户不能收到连接操作的当前状态和进度信息。但是仍然有解决方法,办法是创建一个新的线程来进行拨号(调用RasDial),另外创建一个新的线程每隔一段时间查询当前拨号状态(调用RasGetConnectStatus)。相比较异步模式在得到当前拨号状态方面要容易的多。异步模式下RasDial函数会立刻返回,接着可以调用RasGetConnectStatus得到当前拨号状态。

RasGetEntryDialParams和RasGetEntryProperties两个函数得到的是不同方面的数据。在此做一说明:CE为DialPrarms拨号参数定义了结构体RASDIALPARAMS。它包括拨号记录名、电话号码、用户名、密码、域名等。而对于Properties属性数据,CE定义了结构体RASENTRY。它包括连接选项、国家码、区域码、本地电话号,可以指定本地IP地址、远程DNS服务器IP、远程WINS服务器IP等,还可以指定连接控制脚本文件路径、采用的协议、调制解调器类型及名称等。在拨号前一定要设置要这些参数,不过不必每个参数都设置。最简单的办法是得到系统默认的所有参数。调用代码如下:

DWORD dwReturn;
dwReturn = RasGetEntryProperties(NULL, L"", &RasEntry, &dwSize, NULL, NULL);
if(dwReturn != 0)
{
不能得到系统拨号参数
return;
}

  得到系统默认的参数后再加以修改,这样避免了设置错误的参数,而且大多数参数不用我们设置。关于拨号上网就讲这么多,如果读者有疑问或者遇到困难可以发邮件给我,如果有时间我将回复。

  另外关于PlatformBuilder,很多人发邮件给我希望我能回答他们关于PB的问题。在这里我向读者们宣布,关于PB和EVC的书我和我的同事正在写,预计9月份就能够完成。这本书详细介绍了PB(包括驱动)和EVC的使用,还有一些开发实例。PB和驱动部分都是我的同事写的,他们很有经验。

在Windows CE下实现拨号上网相关推荐

  1. Windows CE下驱动程序开发基础

    我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驱动部分,头脑中仍然一片茫然.要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)中初始化过程为线索简单 ...

  2. Windows CE下的网络监测工具(上)

    作者:马宁 最近被一个软件网络连接的问题,折腾得死去活来.问题本身不复杂,主要是网络设置不同造成的,在这里不多说了.在调试过程中,用到了Windows CE下的几个网络监测工具,才了解到Windows ...

  3. android找不到 windows 7 共享无线网络连接,Windows 7下wifi共享上网设置教程 没有无线路由器也能用wifi...

    有时候碰到有网线而没有无线路由器,又想多台笔记本和手机,ipad都能同时上网,网上有许多软件能实现这样的功能,如Virtual Router,MaryFi,ApWiFi,Connectify等等,这些 ...

  4. linux操作系统adsl 上网设置,Linux操作系统下ADSL拨号上网详细步骤 -电脑资料

    本指南将帮助你在Ubuntu 6.06 LTS (Dapper Drake)下用PPPoE以太网modem建立ADSL网络连接, 1. 简介 虽然用路由器联网很常见,我们有时也需要用PPPoE直接连接 ...

  5. linux下3G拨号上网

    Linux下3G拨号上网 开发板型号 :FL2440 内核版本:linux-3.0 3G上网卡:ZTE MF626 SIM卡:中国移动 1. usb_modeswitch移植 usb_modeswit ...

  6. linux ppp拨号 USB,linux下ppp拨号上网

    转帖 如何用 Linux 拨号上网 一.Linux 上的 PPP Linux 中已经包括了点对点协议PPP,其主体是 pppd ,如果你已经使用过 Windows95 或 NT 的拨号网络,那么你已经 ...

  7. linux ppp用户管理,linux下ppp拨号上网

    转帖 如何用 Linux 拨号上网 一.Linux 上的 PPP Linux 中已经包括了点对点协议PPP,其主体是 pppd ,如果你已经使用过 Windows95 或 NT 的拨号网络,那么你已经 ...

  8. ubuntu下adsl拨号上网

    无论是电信还是联通,拨号软件都只有windows版本,根本没有考虑过linux用户,但是ubuntu这个优秀的系统怎么可能没有简单的拨号呢,下面由我给大家介绍几种linux拨号的方法,主要是分两种: ...

  9. 阿雪的学习记录|解决Linux下PPPoE拨号上网不稳定的问题

    上次拨号上网成功之后,新的问题又出现了,那就是网络秒掉线且网速及其慢,归纳为网速不稳定,然后去网上找了很多方法,什么检查防火墙配置啊--这了那了的,都不太行呢,最后参考了这篇就解决啦- Ubuntu1 ...

最新文章

  1. Dorado7功能及技术特点
  2. android.view.ViewRoot$CalledFromWrongThreadException的解决办法
  3. Windows下删除.svn文件夹的最简易方法
  4. Jmeter使用入门
  5. jquery拓展插件开发
  6. http://4526621.blog.51cto.com/4516621/1343369
  7. 服务器如何区分多个客户端的信息,如何从服务器向客户端发送已连接客户端的列表,以区分常规消息?...
  8. 数据结构--图 Graph
  9. python字典程序题_急!一道关于python字典的编程题!求思路!
  10. 河北体检系统诚信企业推荐_海南膜结构停车棚加工厂诚信企业推荐
  11. C# list集合 重复元素 索引_源码分析专题10-纯手写JDK不同版本下的List接口
  12. 《Go语言程序设计》读书笔记(二)函数
  13. GLSurfaceView源码分析以及简单使用
  14. 疫情之下 SaaS 市场两极分化,SaaS 厂商如何突围严峻形势?
  15. flowable 配置自定义表单_SpringBootSecurity学习(03)网页版登录添加自定义登录页面...
  16. source 还原数据库
  17. 计算机主机发出滴滴声音怎么办,电脑蓝屏后主机滴滴的响应该怎么处理教程
  18. lenovo启动热键_联想启动热键
  19. spring aop分析(一)
  20. babylon101| 09. Intersect Collisions - mesh(网格交叉碰撞)

热门文章

  1. 人工智能的基础算法总结
  2. flutter iOS 屏蔽黑暗模式
  3. 将字符串转成数组的方法
  4. 聊一聊贝叶斯和MCMC......
  5. Mockito简单使用及原理分析
  6. 微信翻译出Bug上热搜,程序员又背锅?
  7. 模拟电子签章盖章效果的jQuery插件源码
  8. 小程序带图标的搜索框,按enter进行功能搜索
  9. 图片格式怎么转JPG格式?分享两个好用的格式转换方法
  10. 移动硬盘文件或目录损坏且无法读取,这样做就对了!