Qt——tcp连接
本项目将实现基于tcp协议的服务端与客户端的连接
客户端编写
1. 设计ui

2. 工程文件下,加一个network

3. 导入必要头文件
#include <QTcpSocket>
#include <QHostAddress>
#include <QMessageBox>
4. 定义并 初始化一个Qtcpsocket对象

5. 编写cancel_button 代码
void Widget::on_cancel_button_clicked()
{
this->close();
}
6. 编写connect_button 代码
void Widget::on_connect_button_clicked()
{
QString ip=ui->ip_line->text();
QString port=ui->port_line->text();
qDebug()<<ip;
qDebug()<<port;
//连接服务器
socket->connectToHost(QHostAddress(ip),port.toUShort());
//连接反馈
//成功
connect(socket,&QTcpSocket::connected,[this](){
QMessageBox::information(this,"连接提示","服务器连接成功");
});
//失败
connect(socket,&QTcpSocket::disconnected,[this](){
QMessageBox::information(this,"连接提示","服务器连接失败");
});
}
7. 测试
我们在这一篇文章有介绍到,tcp的服务端代码,我们用这里的代码进行测试

链接成功
服务端编写
前面的步骤和客户端基本一致
1. 导入模块,并宏定义端口号
#include <QTcpSocket>
#include <QTcpServer>
#include <QMessageBox>
#include <QHostAddress>
#define port 6666
2. 创建一个server对象,并初始化,注意这里是QTcpServer类
QTcpServer * server;
3. 链接代码编写
服务端的步骤为:
- 创建
- 绑定
- 监听
- 等待连接
- 接收/发送
- 关闭连接
构造函数初始化
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//初始化
server=new QTcpServer;
//监听
server->listen(QHostAddress::AnyIPv4,port);
//客户端发起连接,server发出信号
connect(server,&QTcpServer::newConnection,this,&Widget::newclientHandler);
}
槽函数
void Widget::newclientHandler()
{
//建立tcp连接
QTcpSocket *socket=server->nextPendingConnection();
//显示
ui->ip_line->setText(socket->peerAddress().toString());//获取客户端的ip地址,并显示在ip_line上
ui->port_line->setText(QString::number(socket->peerPort()));//获取客户端端口号,并显示在port_line上
}
测试一下,成功!

这里先介绍到这里,有了这个基本的了解,后续还可以拓展做一个基于tcp的聊天系统
643

被折叠的 条评论
为什么被折叠?



