初步使用TCP(QT)

本文介绍了如何在QT环境中实现TCP通信。上位机通过QTcpServer建立服务器端,监听并处理来自下位机的TCP连接。当连接建立、数据到来或出现错误时,触发相应的槽函数进行处理。下位机则通过QTcpSocket发起连接,并在连接成功、断开或准备读取数据时执行相应操作。通信过程中,数据传输包括视频流和控制指令,实现了双向交互。

首先上位机中通过新建一个tcpserver:

tcpServer = new QTcpServer(this);来实现与下位机的对接。

connect(tcpServer,SIGNAL(newConnection()), this, SLOT(sendFortune()));

建立一个新的QTcpSocket:

tcpServerConnection=new QTcpSocket(this);

一般产生的信号都要包括以下四个(三个connect,和一个监听,先监听)

tcpServerConnection = tcpServer->nextPendingConnection();//设置监听

connect(tcpServerConnection,SIGNAL(disconnected()),tcpServerConnection,SLOT(deleteLater()));

connect(tcpServerConnection,SIGNAL(readyRead()),this,SLOT(Read_Data()));//当有数据到来时,触发slot

connect(tcpServerConnection,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(DisplayError(QAbstractSocket::SocketError)));

当tcpServer和下位机的tcpSocket建立了通讯的时候发出newConnection()信号,出发槽信号sendFortune()

为连接并未成功的触发信号,触发删除控制操作。

Read_Data()是在已经连接好了,触发的槽信号,设置传输的数据流为Qt_5_3的版本,然后接收收到的视频流数据,得到的图像显示在Qlable上。

DisplayError(QAbstractSocket::SocketError)是在连接错误的时候触发,触发命令

tcpServerConnection->close()使得连接断开。

以下为下位机部分程序:

tcpsocket=newQTcpSocket(this);

connect(tcpsocket,SIGNAL(connected()),this,SLOT(slotConnect()));

connect(tcpsocket,SIGNAL(disconnected()),this,SLOT(slotDisconnect()));

connect(tcpsocket,SIGNAL(readyRead()),this,SLOT(data_get()));

tcpsocket->connectToHost(*serveIP,port);

slotConnect()是连接成功触发的,本次放入的是提示框,显示连接成功。

slotDisconnect()在未连接成功的时,触发opencamerabut->setEnabled(false);命令使得opencameabut无法被使用。data_get()是在连接成功并准备好了数据传输的时候触发,tcpsocket->readAll();可以接收到上位机给的命令字符,通过判断不同的字符实现不同的操作。tcpsocket->connectToHost(*serveIP,port);是开始进行与输入的地址的上位机进行连接,与上位机进行握手建立通讯。

最后通过

QByteArray Rec = tcpsocket->readAll();

来实现接收字符,通过

tcpServerConnection = tcpServer->nextPendingConnection();//设置监听

来实现监听和以下三个connect;通过

  tcpServerConnection->write("发送的字符");
来实现发送数据;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值