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的更多相关文章
随机推荐
- centos6.5安装sendmail
1.下载安装sendEmail(下载绿色版,解压可直接使用) wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1. ...
- jQuery --- 收集表单
第一种:常用获取对应表单的value值进行收集: 第二种:用jQuery的 serializeArray() 方法收集: <form id="change"> < ...
- jps命令用法
jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写.非常简单实用. 命令格式:jps [option ...
- ibatis 中#和 $ 符号的区别
1.数据类型匹配 #:会进行预编译,而且进行类型匹配(自动确定数据类型): $:不进行数据类型匹配. 2.实现方式: # 用于变量替换(先生成一个占位符,然后替换) select * from use ...
- 虚拟机中CentoOs配置ip且连网
1.修改"VMware Network Adapter VMnet8",配置IP 2.打开虚拟机,"编辑" => "虚拟网络编辑器", ...
- SQL基础--查询之三--嵌套查询
SQL基础--查询之三--嵌套查询
- python控制台输出颜色
python_控制台输出带颜色的文字方法在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也 ...
- HDU3579:Hello Kiki(解一元线性同余方程组)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3579 题目解析:求一元线性同余方程组的最小解X,需要注意的是如果X等于0,需要加上方程组通解的整数区间lc ...
- PAT 1075 PAT Judge[比较]
1075 PAT Judge (25 分) The ranklist of PAT is generated from the status list, which shows the scores ...
- docker——三剑客之Docker swarm
Docker Swarm是Docker官方的三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案.使用它,用户可以将多个Docker主机封装为单个大型的虚拟D ...