如何将Qt的TCP通信实现改写为一个支持长尾词的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1359个文字,预计阅读时间需要6分钟。
本文分享了基于Qt的TCP通信的具体实现代码,供大家参考。
一、TCP介绍TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的可靠传输协议,广泛应用于网络通信。协议规定通信双方必须先建立连接,然后才能进行数据传输。
二、协议角色TCP协议规定通信的双方分别是服务端和客户端。服务端负责监听端口,等待客户端的连接请求;客户端负责发起连接请求,与服务端建立连接。
三、代码示例以下是一个简单的TCP通信示例:
cpp// 服务端代码#include #include
QTcpServer *server;
void setupServer(){ server=new QTcpServer(); server->listen(QHostAddress::Any, 12345); connect(server, &QTcpServer::newConnection, this, &Server::handleNewConnection);}
void Server::handleNewConnection(){ QTcpSocket *clientSocket=server->nextPendingConnection(); connect(clientSocket, &QTcpSocket::readyRead, this, &Server::handleReadyRead);}
void Server::handleReadyRead(){ QTcpSocket *clientSocket=qobject_cast(sender()); if (clientSocket) { QByteArray data=clientSocket->readAll(); qDebug() << Received: // 客户端代码#include QTcpSocket *socket; void setupClient(){ socket=new QTcpSocket(); socket->connectToHost(QHostAddress::LocalHost, 12345); connect(socket, &QTcpSocket::connected, this, &Client::handleConnected);} void Client::handleConnected(){ qDebug() void Client::handleDisconnected(){ qDebug() << Disconnected from server;} 以上代码展示了如何使用Qt实现TCP通信。服务端监听12345端口,客户端连接到本地主机12345端口。客户端发送数据,服务端接收并回显数据。 本文实例为大家分享了基于Qt的TCP实现通信的具体代码,供大家参考,具体内容如下 TCP是面向连接的可靠传输的协议,协议规定通信的双方是服务端和客户端的两个角色: 服务器端 客户端 (1)服务器端设计 1、建立一个工程,工程名为tcpserver,类名为server。在.pro文件中加入如下代码并保存。 QT += network
2、进入server.h,添加类的前置声明 class QTcpServer; //QTcpServer类的前置声明
class QTcpSocket; //QTcpSocket类的前置声明
添加私有对象指针 QTcpServer *tcpServer; //添加QTcpServer私有对象指针
QTcpSocket *socket; //添加QTcpSocket私有对象指针
添加私有槽声明 void tcpServer_connect(); //连接函数
void read_data(); //读取从client发来的信息
void disconnected(); //断开连接
void on_sendButton_clicked(); //发送数据函数
3、转到server.cpp文件中 添加头文件#include,然后编写构造函数构造函数 Server::Server(QWidget *parent) : //构造函数
QDialog(parent),
ui(new Ui::Server)
{
ui->setupUi(this);
tcpServer = new QTcpServer(this); //创建对象
if(!tcpServer->listen(QHostAddress::LocalHost,6666)) //调用listen监听到来的连接,一旦有客户端连接到服务器,就发射newConnection信号
{
qDebug()<<tcpServer->errorString();
close();
}
ui->sendButton->setEnabled(false); // 设置按钮初始值值为false状态,即不可用
connect(tcpServer,&QTcpServer::newConnection,this,&Server::tcpServer_connect);//将newConnection信号与槽函数连接起来
}
槽函数 //发送数据槽函数
void Server::on_sendButton_clicked()
{
socket->write(ui->sendText->toPlainText().toLocal8Bit()); //通过write函数发送数据
socket->flush();
ui->sendText->clear();
}
//确认连接
void Server::tcpServer_connect()
{
socket=tcpServer->nextPendingConnection();
QObject::connect(socket,&QTcpSocket::readyRead,this,&Server::read_data); //当接收缓冲区有信号到来时,产生readyRead信号
QObject::connect(socket,&QTcpSocket::disconnected,this,&Server::disconnected);//当接收到dinconnected信号时,执行disconnected函数
ui->sendButton->setEnabled(true); //按钮设置为有效
ui->label->setText(tr("连接成功!"));
}
//读取客户端发送的数据
void Server::read_data()
{
QByteArray buffer=socket->readAll(); //读取的数据放入QByteArray对象中
ui->recText->append(QString::fromLocal8Bit(buffer)); //将数据显示出来
}
void Server::disconnected()
{
ui->sendButton->setEnabled(false); //断开连接后按钮值设置为无效
}
(2)客户端设计 1、建立一个工程,工程名为tcpclient,类名为client。在.pro文件中加入如下代码并保存。 QT += network
2、进入client.h,添加类的前置声明 class QTcpSocket; //QTcpSocket类的前置声明
定义一个套接字对象指针 QTcpSocket *tcpSocket; //定义一个套接字对象指针
添加私有槽函数声明 void readData(); //读取函数
void discon(); //断开连接
void on_connectButton_clicked(); //连接按钮槽函数
void on_sendButton_clicked(); //发送按钮槽函数
3、转到client.cpp, 添加头文件#include,并编写构造函数 Client::Client(QWidget *parent) :
QDialog(parent),
ui(new Ui::Client)
{
ui->setupUi(this);
tcpSocket = new QTcpSocket(this); //定义套接字对象
//关联信号到自定义的槽上
QObject::connect(tcpSocket,&QTcpSocket::readyRead,this,&Client::readData); //有接收数据时,执行读函数
QObject::connect(tcpSocket,&QTcpSocket::disconnected,this,&Client::discon);
ui->sendButton->setEnabled(false);
}
槽函数 void Client::discon()
{
ui->sendButton->setEnabled(false);
ui->connectButton->setText(tr("取消连接"));
}
//点击连接按钮,开始创建连接
void Client::on_connectButton_clicked()
{
if(ui->connectButton->text()==tr("连接"))
{
tcpSocket->abort();
tcpSocket->connectToHost(ui->hostLineEdit->text(),ui->portLineEdit->text().toInt());//连接到指定主机的端口
if(!tcpSocket->waitForConnected(30000)) //超时连接失败
{
qDebug()<<"Connection failed!";
return;
}
qDebug()<<"Connection successfully!";
ui->connectButton->setText("取消连接");
ui->sendButton->setEnabled(true);
}
else
{
tcpSocket->disconnectFromHost();
ui->connectButton->setText("连接");
ui->sendButton->setEnabled(false);
}
}
//点击发送数据
void Client::on_sendButton_clicked()
{
QString sendData=ui->sendText->toPlainText(); //发送数据为文本框的的内容
tcpSocket->write(sendData.toLocal8Bit());
tcpSocket->flush();
ui->sendText->clear();
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。一、tcp介绍
服务端:负责监听网络端口,等待客户端的连接,用连接的socket完成信息的交互;
客户端:负责每次连接的发起,建立连接后才可以进行通信;二、界面设计
三、具体程序设计
本文共计1359个文字,预计阅读时间需要6分钟。
本文分享了基于Qt的TCP通信的具体实现代码,供大家参考。
一、TCP介绍TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的可靠传输协议,广泛应用于网络通信。协议规定通信双方必须先建立连接,然后才能进行数据传输。
二、协议角色TCP协议规定通信的双方分别是服务端和客户端。服务端负责监听端口,等待客户端的连接请求;客户端负责发起连接请求,与服务端建立连接。
三、代码示例以下是一个简单的TCP通信示例:
cpp// 服务端代码#include #include
QTcpServer *server;
void setupServer(){ server=new QTcpServer(); server->listen(QHostAddress::Any, 12345); connect(server, &QTcpServer::newConnection, this, &Server::handleNewConnection);}
void Server::handleNewConnection(){ QTcpSocket *clientSocket=server->nextPendingConnection(); connect(clientSocket, &QTcpSocket::readyRead, this, &Server::handleReadyRead);}
void Server::handleReadyRead(){ QTcpSocket *clientSocket=qobject_cast(sender()); if (clientSocket) { QByteArray data=clientSocket->readAll(); qDebug() << Received: // 客户端代码#include QTcpSocket *socket; void setupClient(){ socket=new QTcpSocket(); socket->connectToHost(QHostAddress::LocalHost, 12345); connect(socket, &QTcpSocket::connected, this, &Client::handleConnected);} void Client::handleConnected(){ qDebug() void Client::handleDisconnected(){ qDebug() << Disconnected from server;} 以上代码展示了如何使用Qt实现TCP通信。服务端监听12345端口,客户端连接到本地主机12345端口。客户端发送数据,服务端接收并回显数据。 本文实例为大家分享了基于Qt的TCP实现通信的具体代码,供大家参考,具体内容如下 TCP是面向连接的可靠传输的协议,协议规定通信的双方是服务端和客户端的两个角色: 服务器端 客户端 (1)服务器端设计 1、建立一个工程,工程名为tcpserver,类名为server。在.pro文件中加入如下代码并保存。 QT += network
2、进入server.h,添加类的前置声明 class QTcpServer; //QTcpServer类的前置声明
class QTcpSocket; //QTcpSocket类的前置声明
添加私有对象指针 QTcpServer *tcpServer; //添加QTcpServer私有对象指针
QTcpSocket *socket; //添加QTcpSocket私有对象指针
添加私有槽声明 void tcpServer_connect(); //连接函数
void read_data(); //读取从client发来的信息
void disconnected(); //断开连接
void on_sendButton_clicked(); //发送数据函数
3、转到server.cpp文件中 添加头文件#include,然后编写构造函数构造函数 Server::Server(QWidget *parent) : //构造函数
QDialog(parent),
ui(new Ui::Server)
{
ui->setupUi(this);
tcpServer = new QTcpServer(this); //创建对象
if(!tcpServer->listen(QHostAddress::LocalHost,6666)) //调用listen监听到来的连接,一旦有客户端连接到服务器,就发射newConnection信号
{
qDebug()<<tcpServer->errorString();
close();
}
ui->sendButton->setEnabled(false); // 设置按钮初始值值为false状态,即不可用
connect(tcpServer,&QTcpServer::newConnection,this,&Server::tcpServer_connect);//将newConnection信号与槽函数连接起来
}
槽函数 //发送数据槽函数
void Server::on_sendButton_clicked()
{
socket->write(ui->sendText->toPlainText().toLocal8Bit()); //通过write函数发送数据
socket->flush();
ui->sendText->clear();
}
//确认连接
void Server::tcpServer_connect()
{
socket=tcpServer->nextPendingConnection();
QObject::connect(socket,&QTcpSocket::readyRead,this,&Server::read_data); //当接收缓冲区有信号到来时,产生readyRead信号
QObject::connect(socket,&QTcpSocket::disconnected,this,&Server::disconnected);//当接收到dinconnected信号时,执行disconnected函数
ui->sendButton->setEnabled(true); //按钮设置为有效
ui->label->setText(tr("连接成功!"));
}
//读取客户端发送的数据
void Server::read_data()
{
QByteArray buffer=socket->readAll(); //读取的数据放入QByteArray对象中
ui->recText->append(QString::fromLocal8Bit(buffer)); //将数据显示出来
}
void Server::disconnected()
{
ui->sendButton->setEnabled(false); //断开连接后按钮值设置为无效
}
(2)客户端设计 1、建立一个工程,工程名为tcpclient,类名为client。在.pro文件中加入如下代码并保存。 QT += network
2、进入client.h,添加类的前置声明 class QTcpSocket; //QTcpSocket类的前置声明
定义一个套接字对象指针 QTcpSocket *tcpSocket; //定义一个套接字对象指针
添加私有槽函数声明 void readData(); //读取函数
void discon(); //断开连接
void on_connectButton_clicked(); //连接按钮槽函数
void on_sendButton_clicked(); //发送按钮槽函数
3、转到client.cpp, 添加头文件#include,并编写构造函数 Client::Client(QWidget *parent) :
QDialog(parent),
ui(new Ui::Client)
{
ui->setupUi(this);
tcpSocket = new QTcpSocket(this); //定义套接字对象
//关联信号到自定义的槽上
QObject::connect(tcpSocket,&QTcpSocket::readyRead,this,&Client::readData); //有接收数据时,执行读函数
QObject::connect(tcpSocket,&QTcpSocket::disconnected,this,&Client::discon);
ui->sendButton->setEnabled(false);
}
槽函数 void Client::discon()
{
ui->sendButton->setEnabled(false);
ui->connectButton->setText(tr("取消连接"));
}
//点击连接按钮,开始创建连接
void Client::on_connectButton_clicked()
{
if(ui->connectButton->text()==tr("连接"))
{
tcpSocket->abort();
tcpSocket->connectToHost(ui->hostLineEdit->text(),ui->portLineEdit->text().toInt());//连接到指定主机的端口
if(!tcpSocket->waitForConnected(30000)) //超时连接失败
{
qDebug()<<"Connection failed!";
return;
}
qDebug()<<"Connection successfully!";
ui->connectButton->setText("取消连接");
ui->sendButton->setEnabled(true);
}
else
{
tcpSocket->disconnectFromHost();
ui->connectButton->setText("连接");
ui->sendButton->setEnabled(false);
}
}
//点击发送数据
void Client::on_sendButton_clicked()
{
QString sendData=ui->sendText->toPlainText(); //发送数据为文本框的的内容
tcpSocket->write(sendData.toLocal8Bit());
tcpSocket->flush();
ui->sendText->clear();
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。一、tcp介绍
服务端:负责监听网络端口,等待客户端的连接,用连接的socket完成信息的交互;
客户端:负责每次连接的发起,建立连接后才可以进行通信;二、界面设计
三、具体程序设计

