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的更多相关文章

随机推荐

  1. Linux 搭建Nginx并添加配置 SSL 证书

    1. 安装准备   1.1 gcc安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: [root@nginx ~]# yum -y i ...

  2. 洛谷P3809 后缀排序【后缀数组】【模板】

    题目背景 这是一道模板题. 题目描述 读入一个长度为 nn 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置.位置编 ...

  3. opencv学习笔记——颜色空间转换函数cv::cvtColor详解

    cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致. 具体 ...

  4. ubuntu下安装meshlab

    PPA 安装,打开终端,输入以下命令: sudo add-apt-repository ppa:zarquon42/meshlab sudo apt-get update sudo apt-get i ...

  5. StartUML-时序图

  6. Ubuntu proxychains && setProxy及 unsetProxy

    https://www.socks-proxy.net/ (ubuntu proxy )[ lantern -addr 0.0.0.0:8787 proxychains4 printenv http: ...

  7. 崩溃block

    [__NSGlobalBlock__ setHidden:]: unrecognized selector sent to instance 0x10dbb9090(null)注释掉 sethidde ...

  8. Python开发【Tornado】:简介与使用

    Tornado框架 简介: Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和 ...

  9. centos 配置redis

    一.配置redis 简介:Redis是使用c语言开发的一个高性能键值数据库.Redis可以通过一些键值类型来存储数据. 下载:官网地址:http://redis.io/ 下载地址:http://dow ...

  10. [py][lc]python高阶函数(匿名/map/reduce/sorted)

    匿名函数 - 传入列表 f = lambda x: x[2] print(f([1, 2, 3])) # x = [1,2,3] map使用 传入函数体 def f(x): return x*x r ...