曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
I D C _ S TO P和I D O K(参见图1 8 - 4)。
与前两个按钮相关的_ C L I C K E D方法分别称为: O n S t a r t ( )和O n S t o p ( )。可以通过C l a s s Vi e w
添加这两个方法,除此之外,还要添加与主对话框相关的W M _ T I M E R处理器( O n Ti m e r ( ))。以
下是类定义:
788使用XML 高级编程
下载
图18-4
程序清单1 8 - 3 8
第18章实例研究4—SOAP使用789 下载
以下是重载的O n I n i t D i a l o g ( )方法:
程序清单1 8 - 3 9
在以上代码中,我们初始化C O M对象,设置计时器,该计时器将用于检查套接字是否仍然
激活。你应该记得,在C O p e r a M a i n S o c k e t代码中,我们利用一个方法检查客户套接字是否仍然
激活。检查套接字的方法是在C O p e r a S e r v e r D l g的O n Ti m e r ( )重载方法中调用的:
程序清单1 8 - 4 0
790使用XML 高级编程
下载
当点击S t a r t按钮,启动O P E R A服务器后,会执行哪些操作?以下是O n S t a r t ( )方法:
程序清单1 8 - 4 1
同样,以上方法非常简明,它在端口8 0创建主套接字,并监听该端口。此后,每当新的客
户连接时,将调用C O p e r a M a i n S o c k e t的O n A c c e p t ( )重载方法。O n S t o p ( )方法更加简单:
程序清单1 8 - 4 2
另外,我们还要确保在适当时刻只有恰当的按钮可用:
第18章实例研究4—SOAP使用791 下载
程序清单1 8 - 4 3
最后一个方法用于将信息输出到状态列表框:
程序清单1 8 - 4 4
5. 快速的测试
在我们连接客户端之前,首先单独测试一下服务器,运行它,并使用Internet Explorer 5连接它。
为此,只需要点击Start按钮,服务器启动之后,通过浏览器访问http://localhost/test(参见图18-5)。
图18-5
792使用XML 高级编程
下载
Internet Explorer将与本地We b服务器(换句话说, O p e r a S e r v e r)建立连接,并向它发送用
于测试的G E T请求。以上就是我们期望看到的结果,因此我们现在可以测试O P E R A客户端。我
们将保持服务器继续处在运行状态,并准备接收任
何真正的调用请求。
18.2.3 订单输入应用程序
对于我们真正的订单输入程序, 将采用
《Professional DCOM Application Development》中的
程序,并做一些小的改动。它是用Visual Basic创建
的。图1 8 - 6是唯一的一个表单f r m O r d e r E n t r y。
我们有五个文本字段: t x t C u s t o m e r,t x t Ti t l e,
t x t A r t i s t,t x t L a b e l和t x t P r i c e。另外,还有一个命名
按钮c m d C o n f i r m和一个(位于表单底部隐含的)标
签l b l E r r o r。
以下是Visual Basic代码,其中突出显示的行是
在原来的面向D C O M的版本基础上修改的:
程序清单1 8 - 4 5
第18章实例研究4—SOAP使用793 下载
图18-6
794使用XML 高级编程
下载
显然,你需要修改c o n H o s t的值,使之匹配运行服务器的主机名称(或者将服务器名称改为
l a a - l a a)。
正如你所看到的,我们已经将所有显式的D C O M
调用替换为通过O P E R A客户的S O A P调用(我们已经
实现了本章开始处讨论的定制排列,虽然我们不一定
非要实现它)。假设服务器已经在Tierra del Fuego运
行,当我们的客户在U l a a n b a t a a r启动后,看看会出现
什么情况?正如我们所知,蒙古的流行趋势已经发生
变化,六十年代后期的迷幻乐不再流行。要想获得有
限版本的C D,只能加入King Crimson Collectors俱乐
部(参见图1 8 - 7)。
假设服务器仍然在主机l a a - l a a上运行。那么,我
们在服务器上看到什么?图1 8 - 8是服务器端的输出:
看起来非常不错。
在继续讨论之前,我们最好看一下订单文件。利
用d f v i e w,我们将看到图1 8 - 9所示内容:
图18-8
第18章实例研究4—SOAP使用795 下载
图18-7
图18-9
双击标题,你就能够看到订单的内容(参见图1 8 - 1 0)。
图18-10
当然,如果我们从头开始编写,而不是使用旧的应用程序,自然会将X M L作为文件格式。
但是你不需要重写所有代码。S O A P并不会改变你的编程习惯。
这就是S O A P。但是,还有一个问题⋯⋯
18.2.4 对象
在I n t e r n e t上,没有人知道你的身份。更有甚者,也没有人知道你的服务器的身份。如果你
没有面向对象的S O A P服务器怎么办?如果你只有一个不太可靠且只能运行标准C的旧U n i x程序
怎么办?如果你仔细考虑一下, S O A P并不是特别面向对象的。它只是通过防火墙发送函数调用
的方法。完全可以不捕获这些S O A P调用,并将它们定位到旧的C程序的函数调用。
因此,完全可以用S O A P整理旧系统。仅仅出于兴趣,我认为我们可以研究一下这种用旧式
标准C编写的旧系统(不,我不能忍受回到F o r t r a n或C o b o l,我担心—这与新千年的第一本书
应有的特征相差太远了,新书应该致力于新内容)。然而,我认为标准C仍然有重新流行的可能
性。在本节中,我将提供S c u m S e r v e r。
796使用XML 高级编程
下载
这个程序将运行在旧的H P / U X系统上,当你读到本书时,它可能已经无法运行,因为我不
能保证它是Y 2 K兼容的。在H P / U X系统上试验成功后,我又将它移植到相当流行的L i n u x系统上,
它同样能够运行(当然,我要做一些改动,消除某些编译警告,并且增加了h t o n s ( )函数,它用
于将端口号从主机标准转化为网络标准)。下面我们进行详细介绍。
我们像往常一样从C的头文件开始,另外还要增加U n i x不提供的几个定义:
程序清单1 8 - 4 6
以下结构用于存放与每个进入的客户套接字相关的信息(因此,它等价于C O p e r a C l i e n t S o c k e t)。
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程下(78)