章火车信息查询系统.pptxVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第25章火车信息查询系统本章将使用Socket技术开发一个网络火车票查询系统。程序使用VisualC++6.0进行开发,架构采用C/S结构,火车票信息存储在文本文件中。目的为了演示使用Socket进行网络编程,使大家熟悉基本的网络编程。

25.1程序需求火车信息查询系统的目的是供用户查询火车信息,下面对基本需求的定义如下。程序采用C/S结构,并采用TCP或UDP进行通信。火车信息存储在文本文件中,服务器端在启动时读取信息到内存中供查询。支持多客户端查询。以上为本系统的基本需求,读者可以在学完本章后对功能进行扩展。

25.2程序界面程序由服务器端和客户端组成,服务器端界面如图25-1所示。下面是界面和相关按钮功能的描述,其界面控件有以下几种。启动按钮:启动服务器并对火车信息文件进行读取,启动后可接受客户端的查询。停止按钮:停止服务器,停止后客户端无法进行查询。退出按钮:退出本程序。车次输入框:输入车次作为查询的依据。查询按钮:查询车次信息。显示框:显示查询信息。退出按钮:退出本程序。

25.3服务端程序在C/S架构中,服务器的主要功能是接收客户端请求并进行处理,然后将处理的结果返回给客户端。对于C/S中的服务器构造,基本上都有一个基本的结构,任何大型和复杂的服务器都是以此为基础进行扩展的。服务器端工程主要包含以下文件。TrainInfo.h:CTrainInfo类声明头文件,实现读取火车信息。TrainInfo.cpp:CTrainInfo类实现文件。ComSocket.h:CComSocket类声明头文件,实现通信功能。ComSocket.cpp:CComSocket类实现文件。TrainServerDlg.h:对话框定义头文件。TrainServerDlg.cpp:对话框实现文件。下面就来分析其中核心功能的代码。

25.3.1服务器通信类建立一个通信类CComSocket,以实现服务器启动,监听功能。成员函数ServerStart()的目的是启动服务器,其中,步骤包括初始化DLL、建立Socket、绑定地址和端口、启动监听。这个启动过程是建立服务器的一般步骤。

25.3.2建立处理线程处理线程用于处理客户端具体的请求。在大多数情况下,常用的处理方式是:服务器在接收到一个客户端请求后,就新开辟了一个线程对其进行处理,当客户端断开后,则结束对应的处理线程。下面的代码演示了如何建立一个处理线程,等待并接收和处理客户端的连接。

25.3.3火车信息处理建立类CTrainInfo,用于处理火车信息。火车信息文本文件的格式如下。车次类型出发站开车时间到达站到达时间用时里程每个信息段之间用空格隔开,下面是一条典型的数据。1461普快北京14:37上海14:3924小时2分1463

25.3.4发送和接收在接收到客户端的连接后,先进行信息的查询,当查询到信息后,则需要将信息发送给客户端,发送的部分代码如下。

接收信息的代码如下。

25.4客户端程序客户端主要操作是连接服务器,发送查询车次编号并接收服务器返回的结果。服务器端工程主要包含以下文件。ComSocket.h:CComSocket类声明头文件,实现通信功能。ComSocket.cpp:CComSocket类实现文件。TrainServerDlg.h:对话框定义头文件。TrainServerDlg.cpp:对话框实现文件。下面就来分析其中核心功能的代码。

25.4.1连接服务器建立通信类CComSocket,连接服务器。

25.4.2发送车次信息当客户端接收到用户输入的车次信息后,就要将此查询信息发送到服务器上进行查询。下面就是服务器发送给客户端信息的模块。同服务器端类似,上述代码中也是通过send()函数实现把查询内容数据发送到服务器端,并返回发送数据长度,据此可以判断数据是否发送完毕。

25.4.3接收服务器返回信息客户端发送数据给服务器之后,就要等待服务器的返回结果。此时,等待过程是阻塞的,即在等待不超时的情况下,函数一直处于等待状态,直到接收到数据。接收服务器返回信息的代码如下。

25.5小结SOCKET已经成为了目前网络编程的主要手段,对其的扩展应用也逐步发展。MFC对SOCKET的API函数有相应的封装,有兴趣的读者可以阅读相关资料。网络编程是一个比较复杂的过程,需要对网络的原理有较深的了解。如果需要全面掌握VisualC++的网络编程技术,需要读者进一步学习网络方面的知识。

文档评论(0)

199****9598 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档