代码拉取完成,页面将自动刷新
#include "ctcpsvrproc.h"
CTcpSvrProc::CTcpSvrProc()
{
serverIP = new QHostAddress;
tcpSocket = new QTcpSocket;
bConnectFlag = false;
QObject::connect(tcpSocket, SIGNAL(readyRead()),this, SLOT(onDataRecv()));
QObject::connect(tcpSocket, SIGNAL(disconnected()),this, SLOT(slotDisconnected()));
connect(tcpSocket, SIGNAL(connected()), this , SLOT(onConnected()));
}
CTcpSvrProc::~CTcpSvrProc()
{
delete serverIP;
delete tcpSocket;
}
//连接服务器
void CTcpSvrProc::connectSvr(QString sIp, QString sPort)
{
if ( bConnectFlag )
{
qDebug()<<"已经连接了!";
return;
}
serverIP->setAddress(sIp);
port = sPort.toShort();
tcpSocket->connectToHost(*serverIP,port);
return;
}
//主动断开处理
void CTcpSvrProc::disconnectSvr()
{
tcpSocket->disconnectFromHost();
tcpSocket->close();
bConnectFlag = false;
return ;
}
//设备连接成功后,会收到这个信号
void CTcpSvrProc::onConnected()
{
disErrMsg("连接设备成功!");
bConnectFlag = true;
}
//数据接收处理
void CTcpSvrProc::onDataRecv()
{
while (tcpSocket->bytesAvailable()>0)
{
QByteArray datagram;
datagram.resize(tcpSocket->bytesAvailable());
tcpSocket->read(datagram.data(), datagram.size());
emit onHasData(datagram);
}
}
//被动断开处理
void CTcpSvrProc::slotDisconnected()
{
disErrMsg("与服务器连接断开");
bConnectFlag = false;
emit onDisconnect();
}
//向服务器发送数据
void CTcpSvrProc::sendData(QByteArray &qbData)
{
int ret = tcpSocket->write(qbData.data(), qbData.size());
if(ret < 0)
{
disErrMsg("CTcpSvrProc::sendData 发送失败");
disconnectSvr();
emit onDisconnect();
}
}
//向服务器发送数据
void CTcpSvrProc::sendData(const char *pData, int iDataLen)
{
int ret = tcpSocket->write(pData, iDataLen);
if(ret < 0)
{
disErrMsg("CTcpSvrProc::sendData 发送失败");
disconnectSvr();
emit onDisconnect();
}
}
//用于向ui层发送需要显示的错误信息的信号
void CTcpSvrProc::disErrMsg(QString str)
{
emit onErrorMsg(str);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。