qt和服务器收发信息,QT TCP通信收发数据(示例代码)

首先在工程文件.pro中加入QT += network需要加的头文件#include #include 服务端1.创建初始化对象mServer = new QTcpServer();mSocket = new QTcpSocket();2.关联客户端connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client()));3.启动...
摘要由CSDN通过智能技术生成

首先在工程文件.pro中加入

QT       += network

需要加的头文件

#include

#include

服务端

1.创建初始化对象

mServer = new QTcpServer();

mSocket = new QTcpSocket();

2.关联客户端

connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client()));

3.启动监听服务

mServer->listen(QHostAddress::Any,1122);

4.接受数据

mSocket = mServer->nextPendingConnection();//与客户端通信的套接字

connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data()));

5.发送数据

mSocket->write((char*)msg,5);

实现代码

tcpServer::tcpServer(QWidget *parent) :

QDialog(parent),

ui(new Ui::tcpServer)

{

ui->setupUi(this);

mServer = new QTcpServer();

//关联客户端连接信号newConnection

connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client())); //连接客户端

//启动服务器监听

mS

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 QtQtSerialBus 模块来实现 Modbus TCP收发报文。 以下是一个示例代码,你可以根据自己的需要进行修改: ```cpp #include <QtSerialBus> QModbusTcpClient *modbusDevice; // 连接到 Modbus TCP 服务器 modbusDevice = new QModbusTcpClient(this); modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter, 502); // 设置端口号 modbusDevice->setConnectionParameter(QModbusDevice::NetworkAddressParameter, "127.0.0.1"); // 设置 IP 地址 // 建立连接 if (!modbusDevice->connectDevice()) { qDebug() << "连接失败:" << modbusDevice->errorString(); return; } // 发送读取线圈状态的请求报文 QModbusDataUnit readCoils(QModbusDataUnit::Coils, 0, 10); // 读取从地址 0 开始的 10 个线圈状态 if (auto *reply = modbusDevice->sendReadRequest(readCoils, 1)) { // 发送请求 if (!reply->isFinished()) { // 等待响应 QEventLoop loop; QObject::connect(reply, &QModbusReply::finished, &loop, &QEventLoop::quit); loop.exec(); } if (reply->error() == QModbusDevice::NoError) { // 响应成功 const QModbusDataUnit unit = reply->result(); for (uint i = 0; i < unit.valueCount(); i++) { qDebug() << "线圈" << i << "状态:" << unit.value(i); } } else { // 响应失败 qDebug() << "读取线圈状态失败:" << reply->errorString(); } reply->deleteLater(); } else { // 发送失败 qDebug() << "发送读取线圈状态请求失败:" << modbusDevice->errorString(); } // 断开连接 modbusDevice->disconnectDevice(); delete modbusDevice; ``` 在上述代码中,我们首先创建了一个 `QModbusTcpClient` 对象,然后设置了连接参数,包括 Modbus TCP 服务器的 IP 地址和端口号,之后调用 `connectDevice()` 方法进行连接。 接着,我们发送了一个读取线圈状态的请求报文,使用 `sendReadRequest()` 方法发送,并传入需要读取的线圈状态的起始地址和数量。如果发送成功,我们需要等待响应,使用 `QEventLoop` 进行等待。 最后,我们根据响应结果进行处理,如果响应成功,我们打印出每个线圈的状态;如果响应失败,则打印出错误信息。 最后,我们需要使用 `disconnectDevice()` 方法断开连接,并删除 `QModbusTcpClient` 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值