Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

这是一个项目,C/S架构,服务端为C++,客户端为Qt,XML为小型数据库,主要是为了进行一些XML的操作。

Notifications You must be signed in to change notification settings

Yushaoxin/XmlProject

Repository files navigation

总结

  • 这次编写的基于XML的公交线路查询系统客户端用的是Qt+多线程在windows下开发,服务端用的是C++在linux下进行开发.服务端用的的服务模型是5种常见的服务模型中的第3种即多进程的模型,之前再windows下面写过的IM(即时通讯工具)是多线程,多进程的好处是单个进程崩溃会不影响整体的运行.在编写的过程中也是碰到了以下的问题,特此总结一下.
  1. 在这个程序中我主要完成了客户端向服务端发送通过起始站点和结束站点查询路线的请求,和添加路线的请求.添加路线的请求只能在编辑框中输入XML形式的内容才行.例如例子1所示.服务端是先遍历XML文件组件邻接表然后通过深度优先遍历来查找最优路径.通讯部分采用socket.

  2. 服务端与客户端的通讯问题:我的服务端是搭建在我虚拟机的Centos 7里面的,在与windows下的客户端通讯的过程中要关闭2者的防火墙才能进行正常的通讯.否则会收不到相应的数据包.

  3. 我用的tinyxml2来解析XML文件,这个库在解析的时候如果传入的元素名错误FirstChildElement("Number"),则会直接引起程序的崩溃,这一点在使用这个库的时候要小心一点.

  4. 每次添加XML数据和重新查找路线时要注意清空XmlParser类中的数据成员,因为每次查询后的结果是存在该数据成员中的.在查找路径时我是将所有的路径都查找出来了,然后存在AllRouteMap[MAXMAP]中.

  5. 每个数据的结构体最好要写一个构造函数来初始化其数据.先前没写,程序崩溃过.

  6. 发包组装数据的时候要注意将malloc的数据空间进行释放.

  7. 在服务端碰到了一些问题Qt多线程的run()函数要写成protected;在多线程之间相互传递引用数据时要加const,const QString &name,多线程的数据安全问题;碰到的最大问题是在接收线程run()中没加QThread::run (),导致老是收到的数据包完后延后一个数据包.http://www.cnblogs.com/neopenx/p/4293599.html 说是"记得调用 QThread::run (); 否则这个run函数并没有完全执行.",现在还不是很理解;注意信号和槽的建立过程,自定义信号和槽比较像windows编程下的自定义消息.

About

这是一个项目,C/S架构,服务端为C++,客户端为Qt,XML为小型数据库,主要是为了进行一些XML的操作。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 83.6%
  • Makefile 10.6%
  • C 3.1%
  • QMake 1.7%
  • M4 1.0%

AltStyle によって変換されたページ (->オリジナル) /