本文介绍了通过网络实现 Linux 主机与 Windows CE 设备协同工作的方法。本文首先利用 PPP 协议在 Linux 主机与 Windows CE 设备之间建立起连接,然后在 Windows CE 设备上运行一个 FTP 服务器使得 Linux 主机能够访问 Windows CE 设备上的资源。本文所介绍的解决方案,对 Windows 9x/2000/NT 主机同样适用。
背景介绍
Linux是一个类似于UNIX 的操作系统,它起源于芬兰一个名为Linus Torvalds 的业余爱好,但是现在已经是最为流行的一款免费操作系统。普通用户在Linux 上办公、浏览网站、发送邮件以及玩游戏,许多大学和科研机构也Linux 来完成日常 的计算任务。在商业领域,由于Linux 系统价格低、安全性能高并且非常稳定,许 多公司均将自己的服务器构建在Linux的基础上。根据国际商用数据公司(IDC)的统计,世界上大约有三分之一的网站服务器使用Linux作为操作系统。
Windows CE,根据微软公司在Windows CE and Pocket PC: FAQ 中的定义,是操作系统开发商用以构建专有操作系统的一系列组件。原始设备制造商(OEM) 可以 向微软公司购买一个称为"Windows CE平台开发系统"的集成开发环境并利用该系 统组装和编译基于Windows CE的操作系统,该操作系统包括一系列基于Windows CE 的组件以及开发商自行开发的应用软件或者是设备驱动程序。由于基于Windows CE 的操作系统具有与微软Windows 系列操作系统相类似的用户界面,因此受到众多最 终用户以及开发商的青睐。目前Windows CE已经被广泛应用在手机,掌上型电脑,个人数字助理,快译通以及电子字典等便携式设备上。
长期以来,Windows CE设备的用户还需要配备一台基于Windows 9x/2000/NT的 主机用于与Windows CE设备交换数据。在该主机上运行微软公司提供的Windows CE 服务软件,该软件通过一条RS-232数据线与Windows CE设备建立起点对点连接,用 户可以通过这个服务软件访问Windows CE设备,但是局域网里面的其它计算机不能 够访问该Windows CE设备。如果需要使得局域网里面的其它计算机也能够访问该设备,则需要为该设备安装昂贵的专用网卡以及相关接入设备,是一种非常不经济的 解决方案。
本文利用Red Hat Linux 7.2操作系统自带的PPP服务器与Windows CE设备之间 建立起TCP/IP连接,然后在Windows CE设备上运行一个FTP服务器使得Linux主机能 够访问Windows CE设备上的资源。由于本方法基于Windows CE设备自带的RS-232数据线,不需要购买额外的任何设备,因此是一种经济实用的解决方案。此外,本文 所介绍的解决方案,对Windows 9x/2000/NT主机同样适用。
连接Linux与Windows CE
点对点数据传输协议(Point to Point Protocol, PPP)是一个通过串口线传送 IP数据包的协议。使用PPP 协议,一台计算机能够通过串口线、电话线等通讯设备登陆到远程主机并且利用该主机或者是主机所在网络的资源。在点对点通讯中包括服务器和客户机两个部分,其中客户机向服务器请求网络连接,服务器接收客户机的请求建立网络连接并分配给客户机相应的网络资源。当网络连接建立起来以后,服务器和客户机之间是严格对等的。由于Linux操作系统通常都带有PPP服务器和客 户端程序,而Windows CE操作系统通常仅带有PPP客户端程序,因此我们使用Linux 主机作为PPP服务器,Windows CE设备作为PPP客户端。
为了使用Linux主机作为PPP服务器,我们首先必须确认该主机上是否已经安装有PPP服务器程序pppd。通常该程序被安装在/usr/sbin目录下,我们可以利用下面 的命令查找该目录下是否存在这个文件:
ls /usr/sbin/pppd
最近正式发行的Linux操作系统(例如Red Hat Linux 6.x/7.x)通常都已经预先 安装有PPP服务器程序。如果Linux 主机尚未安装PPP服务器,那么我们应该首先下 载并安装一个PPP服务器程序,例如pppd2.3.4。安装该程序包可能还需要其它包的支持,由于应用程序的安装已经超出了本文的讨论范围,请感兴趣的读者自行参考 其它相关资料。
确认PPP服务器已经安装在Linux主机上之后,我们需要对Linux 主机进行一些必要的配置,为了进行这些配置我们需要拥有root权限。
建立文件/etc/ppp/peers/wince,内容如下:
/dev/ttyS0 115200 crtscts
connect '/usr/sbin/chat -v -f /etc/ppp/wince.chat'
noauth
local
90.0.0.1:90.0.0.2
建立文件/etc/ppp/wince.chat,内容如下:
TIMEOUT 3600
"CLIENT" "CLIENT\c"
"" "SERVER\c"
在上面的两个配置文件中,使用wince 作为文件名仅仅是用来表示这个配置文 件是给一个Windows CE设备使用的。读者也可以自行选用其它的文件名,例如palm 或者是handheld等等,但是必须保证两个文件名是一致的。
配置文件/etc/ppp/peers/wince指定使用串口ttyS0以115,200 bps的速率与客户设备建立连接,noauth参数说明在客户机请求连接的时候不需要身份认证。在这 个对等连接中,服务器(Linux 主机)的IP是90.0.0.1,客户机(Windows Ce设备)的 IP是90.0.0.2。配置文件/etc/ppp/wince.chat中的TIMEOUT参数指定服务器的等待时间,如果超过这个时间仍然没有接收到客户机的连接请求则终止当前的服务器程序。如果有读者需要更进一步的了解相关的配置,请自行参考chat以及pppd的相关 文档。
在Windows CE设备端需要做的配置相对来说比较简单。由于Windows CE默认的自动连接功能占用了该设备的串口,我们首先需要停止使用该功能。在开始菜单中选择"设置->通讯->PC连线"并将其设置为不启用与PC的连接即可停止该功能。然后我们重新建立一个连接,在开始菜单种选择"程序->通讯->连接管理器",然后点击 "新建连接"图标,将新的连接命名为Linux 并指定连接类型为"直线连接",在下一 步中指定使用COM1进行连接并设置其通讯速率为115,200,在TCP/IP 设置中指定该设备的IP为90.0.0.2。点击OK存盘以后该连接会出现在"程序->通讯"菜单里面。
利用如下命令在Linux主机上启动PPP服务器:
pppd call wince
在Windows CE 设备上启动新建的连接(程序->通讯->Linux)之后,网络连线图 标会出现在Windows CE设备的任务栏上,Linux 主机则显示如下信息表明已经成功 与Windows CE设备建立起连接:
Serial connection established.
Using interface ppp0
Connect: ppp0 <--> ttyS0
found interface eth0 for proxy arp
local IP address 90.0.0.1
remote IP address 90.0.0.2
我们还可以使用Linux 主机提供的ping命令来验证是否已经成功与Windows CE 设备建立连接:
ping 90.0.0.2
如果Linux 主机已经成功的与Windows CE设备建立连接,那么我们应该能够看 到类似于下面的信息:
PING 90.0.0.2 (90.0.0.2) from 90.0.0.1 : 56(84) bytes of data.
64 bytes from 90.0.0.2: icmp_seq=0 ttl=32 time=26.587 msec
64 bytes from 90.0.0.2: icmp_seq=1 ttl=32 time=19.928 msec
64 bytes from 90.0.0.2: icmp_seq=2 ttl=32 time=19.939 msec
64 bytes from 90.0.0.2: icmp_seq=3 ttl=32 time=19.947 msec
基于Windows CE的FTP软件
当我们成功的在Linux主机与Windows CE设备之间建立起PPP连接之后,下一步应该做些什么呢?当然,我们需要一些合适的程序用来在Linux 主机与Windows CE 设备之间进行文件交换。我们现在已经能够利用TCP/IP协议在Linux主机和Windows CE设备之间传输数据,很显然FTP程序是一个合适的选择。
FTP(File Transport Protocol,文件传输协议)是一种被广泛使用的在网络上进行文件交换的协议。由于数据传输可靠性的要求,FTP 是一种基于TCP/IP的传输 协议。在一个FTP 会话中包括一个服务器端和一个客户端,客户端主动连接到服务器端并向服务器发送文件传输请求,服务器端等待客户端的接入并处理客户端的文 件传输请求。
PE FTP Explorer是非常流行的基于Windows CE的FTP客户端软件,同时也是一 个功能齐全的文件浏览器。与在PC机上常用的Cute FTP和WS FTP等FTP 客户端相类 似,用户能够利用鼠标(指针)放缩本地端和服务器端的目录树,上载或者是下载文件和目录,也可以对文件或者是目录进行改名和删除。这个软件可以从CE Archive 网站(http://www.cearchives.com/ftp.html)获得。在该网站读者还可以找到另外 一个很流行的FTP客户端vxFTP。
FTP 客户端软件的功能虽然已经非常的完备而且操作简单,但是仍然不可避免的要收到便携式设备窄小的显示器的限制。如果能够在便携式设备上建立一个FTP 服务器,那么文件传输操作就可以在Linux主机上利用常用FTP客户端的进行。
ftpsrv.exe就是这样一个基于Windows CE的FTP服务器软件。这个仅有28.5 KB 的小程序,除了不提供身份认证功能和Passive 传输模式以外,能够处理大多数常 见的FTP 请求。利用微软提供的Windows CE服务软件将ftpsrv.exe上载到便携式设备的任意目录下,启动该程序以后在任务条上会出现一个类似于一台计算机连接两个便携式设备的小图标。利用指针点击该图标以后会出现一个小小的控制窗口,在这里我们可以改变FTP服务器的端口号或者是终止该程序。
ftpsrv.exe可以从http://pda.tucows.com/或者是http://www.oohito.com/获 得。在这两个网站读者还可以找到更多有用的小程序。
其它
如果有读者使用的是Windows 9x/2000/NT主机,那么也可以利用Windows 提供 的直线电缆连接功能与Windows CE设备建立起PPP连接。
例如:在Windows 2000主机上,从开始菜单中选择设置->网络和拨号连接->新建连接。在随后出现的网络连接向导中选择直接连接到另一台计算机并将该机器配置为主机。选择合适的通讯端口并配置通讯速率以后,该主机作为PPP 服务器等待 客户机接入。同样,在Windows CE设备上新建一个连接,指定合适的通讯端口并配 置起通讯参数以后,即可与Windows主机建立起点对点连接。由于Windows主机已经配备了动态网络地址分配(DHCP)服务器,因此Windows CE设备既可以使用实现指定的静态IP地址,也可以使用服务器实时分配的动态IP地址。但是,由于直线电缆连 接所允许的最高传输速率为19,200 bps,使用Windows 9x/2000/NT主机作为PPP 服 务器似乎比不上Linux主机实用。
如果将PPP 服务器设置为网关,则局域网里面所有的机器都可以通过改网关访 问已经连接到网络上的Windows CE设备。在Linux 主机上,可以通过ipchains将该 主机设置成透明网关;在Windows 9x/2000/NT 主机上,可以通过Win Proxy等代理服务器软件将其设置为透明网关。如果有读者需要更进一步了解如何将Linux 或者是Windows主机设置为透明网关的方法,请自行阅读其它参考资料。
作者简介
蒋清野,软件工程专家。1999年7月获得清华大学学士学位,2001年1月获得伊里诺 大学(Univ. of Illinois at Urbana-Champaign)硕士学位,目前是美国导航与控 制公司(American GNC Corporation)工程专家。主要研究领域包括遥感图像信息处理,GPS应用,惯性导航,无线通讯和高速网络技术。