Qt5_TCP_Client01
ZC: 代码来自<<Qt及Qt Quick开发实战精解>>“代码\src\5\5-3”(“代码\src\5\5-4”里面的代码差不多,不知有何差别...貌似应该是更为完善)
ZC: 这是 Qt5 TCP客户端 简单测试类
1、TtcpClient.h
#ifndef TTCPCLIENT_H
#define TTCPCLIENT_H #include <QObject>
#include <QTcpSocket> class TtcpClient : public QObject
{
Q_OBJECT
public:
explicit TtcpClient(QObject *parent = ); signals: public slots: public:
QTcpSocket *FsktTcp;
public:
void NewConnectZ(QString _strDestIP, qint16 _iDestPort);// 创建新连接
void AbortZ();// 取消
void CloseZ();// 关闭
// ***
void WriteZ();// 发送数据
public slots:
void ReadyReadZ();// 读取数据
void SocketErrorZ(QAbstractSocket::SocketError _socketError);// 错误处理
}; #endif // TTCPCLIENT_H
2、TtcpClient.cpp
#include "TtcpClient.h" #include <QDebug>
#include <QHostAddress>
#include <QDataStream> TtcpClient::TtcpClient(QObject *parent) : QObject(parent)
{
FsktTcp = new QTcpSocket(this); // 错误处理
connect(FsktTcp, SIGNAL(QAbstractSocket::error(SocketError)),
this, SLOT(SocketErrorZ(QAbstractSocket::SocketError)));
// 读取数据
connect(FsktTcp, SIGNAL(readyRead()), this, SLOT(ReadyReadZ()));
} // 创建新连接
void TtcpClient::NewConnectZ(QString _strDestIP, qint16 _iDestPort)
{
FsktTcp->abort();
QHostAddress ha(_strDestIP);
FsktTcp->connectToHost(ha, _iDestPort);
} // 取消
void TtcpClient::AbortZ()
{
FsktTcp->abort();
} // 关闭
void TtcpClient::CloseZ()
{
FsktTcp->close();
} // 错误处理
void TtcpClient::SocketErrorZ(QAbstractSocket::SocketError _socketError)
{
switch(_socketError)
{
case QAbstractSocket::RemoteHostClosedError :
{
qDebug() << "Remote host closed .";
break;
}
default : qDebug() << FsktTcp->errorString();
}
} // 读取数据
void TtcpClient::ReadyReadZ()
{
QDataStream in(FsktTcp);
in.setVersion(QDataStream::Qt_5_5); QByteArray baRead = FsktTcp->readAll(); qDebug() << QString::fromLocal8Bit(baRead);
// 接收完毕,就关闭socket
} // 发送数据
void TtcpClient::WriteZ()
{
QByteArray outBlock;
outBlock = outBlock.append("test out"); QDataStream out(&outBlock, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_5); //qDebug() << outBlock.size();
//out. // 发送数据
FsktTcp->write(outBlock);
}
3、
Qt5_TCP_Client01的更多相关文章
随机推荐
- 02.JMS基础
1.面向消息的中间件(MOM) 1.什么是MOM 面向消息的中间件,Message Oriented Middleware,简称MOM,中文简称消息中间件,利用高效可靠的消息传递机制进行平台无 ...
- Spring源码学习之BeanFactory体系结构
一.BeanFactory BeanFactory是Spring IOC容器的鼻祖,是IOC容器的基础接口,所有的容器都是从它这里继承实现而来.可见其地位.BeanFactory提供了最基本的IOC容 ...
- docker基本操作命令
1. 构建镜像 docker build -t centos/tomcat:7.0 2. 创建一个容器 docker run --name test-tomcat centos/tomcat:7.0 ...
- Shape of passed values is (3490, 21), indices imply (3469, 21)
背景 处理DataFrame数据时,抛了这个错误:Shape of passed values is (3490, 21), indices imply (3469, 21) 解决 数据出现重复,导致 ...
- top与with ties用法
使用top中把与最后一条记录值相同的数据也放入列表中 一.SQL SERVER中使用WITH TIES的用途 with ties一般是和Top , order by相结合使用的,会查询出最后一条数据额 ...
- android唯一设备标识、设备号、设备ID的获取方法
##如何获取Android设备唯一ID? ###问题 每一个android设备都有唯一ID吗?如果有?怎么用java最简单取得呢? ###回答1(最佳) 如何取得android唯一码? 好处: 1.不 ...
- Spark中ml和mllib的区别
转载自:https://vimsky.com/article/3403.html Spark中ml和mllib的主要区别和联系如下: ml和mllib都是Spark中的机器学习库,目前常用的机器学习功 ...
- pssh批量远程管理工具
Linux下批量管理工具pssh使用记录 pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器:pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具 ...
- OAuth 白话简明教程 5.其他模式
转自:http://www.cftea.com/c/2016/11/6706.asp OAuth 白话简明教程 1.简述 OAuth 白话简明教程 2.授权码模式(Authorization Code ...
- vue小toast插件报错runtine-only
var Toast={}; Toast.install = function (Vue, options) { let opt = { defaultType:'bottom', // 默认显示位置 ...