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的更多相关文章
随机推荐
- 微信小程序 --- 组件
view组件:小程序使用最多的组件.可以理解为 div: Text组件:用于展示文字.可以理解为 p span 标签.(除了Text组件以外的其他组件都无法被长按选中) Text组件无法解析HTML, ...
- 微信小程序 --- if/else条件渲染
if 条件渲染:当为真的时候显示,当为假的时候隐藏: else 条件渲染:当为真的时候隐藏,当为假的时候显示: <view wx:if="{{true}}">{{tex ...
- JavaORM框架之Mybatis篇(Ibatis)
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- SQL---->mySQl数据库1------表的增删改查
一.创建表(增) 二.删除表(删) drop table 表名; 三.修改表(改) 3.1修改表——>增加一列 3.2修改表——>修改列的值 3.3修改表——>删除列 3.4修改表— ...
- 您好,python的请求es的http库是urllib3, 一个请求到贵司的es节点,想了解下,中间有哪些网关啊?冒昧推测,贵司的部分公共网关与python-urllib3的对接存在异常?
您好,python的请求es的http库是urllib3, 一个请求到贵司的es节点,想了解下,中间有哪些网关啊?冒昧推测,贵司的部分公共网关与python-urllib3的对接存在异常? 负载均衡( ...
- 【Loadrunner】使用LR录制HTTPS协议的三种方法
使用LR录制HTTPS协议的三种方法 一.最简单的方法:浏览器配置打开浏览器,安装证书,配置完成后直接用http协议录制即可(配置完成的标识就是打开网页,不显示安全提示) 二.LR配置修改操作步骤如下 ...
- java-mybaits-010-mybatis-spring-使用 SqlSession、注入映射器
一. SqlSession概述 在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession.一旦你获得一个 session 之后,你可以使用它来执行映射语句, ...
- PhotoSwipe中文API(三)
http://photoswipe.com/documentation/api.html 所有的方法和这个网页上列出的属性是公开的.如果你想看看例子什么API可以做的,拿在默认PhotoSwipe U ...
- Incorrect datetime value
今天在开发库上给一个表添加字段时候,发现居然报错: root@DB 06:14:42>ALTER TABLE `DB`.` user` ADD COLUMN `status_mode` TINY ...
- Centos7使用yum下载rpm包而不执行安装
yum-downloadonly是yum的一个插件,使得yum可以从RHN或者yum的仓库只下载包而不安装. 举例,从yum源下载ricci软件包 # yum install --downloadon ...