QTcpServer和QTcpSocket类是专门用于实现TCP下的客户端和服务器程序的类。
QTcpSocket是从QIODevice类继承下来的,使用QDataStream或者QTextStream类可以读写它,值得注意的是:从网络中读取数据与从文件中读取数据的不同在于使用>>操作符之前我们必须确保我们已经接收到了足够的数据,否则会成为未定义的动作。
实例的创建与分析
创建目标:使用一个自定义的基于块传输的C/S应用程序。
客户端取名Trip Planner,允许用户计划他们的下一个火车站,服务器取名Trip Server,用于给客户端提供火车票信息。先从客户端程序开始,录入信息包括:起点,终点,日期,时间,两个选择按钮分别用来选择出发与到达的时间。点击search按钮后,应用程序给服务器发送请求,服务器返回一系列满足客户端要求的火车时刻表,客户端将时刻表显示在QTableWidget上,下面的QLabel标签对象用于显示状态,接下来就是完成功能实现的代码
【槽函数分析】
当点击search按钮时触发槽函数connectToServer与服务器建立连接,调用connectToHost函数实现连接,当连接成功时QTcpSocket对象会发出connected信号,否则会发出error信号,所以,根据socket对象发出的信号来编写各自对应的槽函数sendRequest()和error()