创建基于TCP的C/S应用程序

QTcpServer和QTcpSocket类是专门用于实现TCP下的客户端和服务器程序的类。

QTcpSocket是从QIODevice类继承下来的,使用QDataStream或者QTextStream类可以读写它,值得注意的是:从网络中读取数据与从文件中读取数据的不同在于使用>>操作符之前我们必须确保我们已经接收到了足够的数据,否则会成为未定义的动作。

 

实例的创建与分析

创建目标:使用一个自定义的基于块传输的C/S应用程序。

客户端取名Trip Planner,允许用户计划他们的下一个火车站,服务器取名Trip Server,用于给客户端提供火车票信息。先从客户端程序开始,录入信息包括:起点,终点,日期,时间,两个选择按钮分别用来选择出发与到达的时间。点击search按钮后,应用程序给服务器发送请求,服务器返回一系列满足客户端要求的火车时刻表,客户端将时刻表显示在QTableWidget上,下面的QLabel标签对象用于显示状态,接下来就是完成功能实现的代码

 

【槽函数分析】

void myclient::connectToServers() { tcpSocket.connectToHost(QHostAddress::LocalHost, 6178); ui->tableWidget->setRowCount(0); ui->searchButton->setEnabled(false); ui->stopButton->setEnabled(true); ui->statusLabel->setText(tr("Connecting to server...")); ui->progressBar->show(); nextBlockSize = 0; }

当点击search按钮时触发槽函数connectToServer与服务器建立连接,调用connectToHost函数实现连接,当连接成功时QTcpSocket对象会发出connected信号,否则会发出error信号,所以,根据socket对象发出的信号来编写各自对应的槽函数sendRequest()和error()

 

你可能感兴趣的:(创建基于TCP的C/S应用程序)