qtcpsocket用法_qtcpsocket发送16进制数据

qtcpsocket用法_qtcpsocket发送16进制数据在QTcpSocket中的tcp通信,发送数据,接收数据都是QTcpSocket套接字的功能,包括server端,QTcpServer的功能仅仅是作为一个服务器的存在;客户端:classClient:publicQWidget{Q_OBJECTpublic:explicitClient(QWidget*parent=0);~Cl…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在QTcpSocket中的tcp通信,发送数据,接收数据都可以是QTcpSocket套接字的完成,包括server端,QTcpServer的功能仅仅是作为一个服务器的存在,它只是用来判断是不是有设备连接,连到以后的数据收发,还是用的QTcpSocket;

客户端:

class Client : public QWidget

{

    Q_OBJECT 

public:

    explicit Client(QWidget *parent = 0);

    ~Client();

   public slots:

    void onReadyRead();//有数据接收触发

    void onConnected();//连接成功触发

    void onDisconnected();//断开连接触发

    void on_pushButton_clicked();//连接IP

    void on_pushButton_2_clicked();//发送数据

    void on_pushButton_3_clicked();//断开连接

private:

    Ui::Client *ui;

    QTcpSocket*m_TcpSocket;

};

 

Client::Client(QWidget *parent) :

    QWidget(parent),

    ui(new Ui::Client){

    ui->setupUi(this);

    m_TcpSocket=new QTcpSocket;

    //当socket上有新数据可读时,自动触发

    connect(m_TcpSocket,SIGNAL(readyRead()),this,SLOT(onReadyRead()));

    connect(m_TcpSocket,SIGNAL(connected()),this,SLOT(onConnected()));//连接成功触发

    connect(m_TcpSocket,SIGNAL(disconnected()),this,SLOT(onDisconnected()));//断开连接触发

}

 

void Client::onReadyRead(){

    QByteArray ba=m_TcpSocket->readAll();//读取所有数据

    ui->lineEdit_3->setText(ba.data());

}

 

void Client::onConnected(){

    qDebug()<<“连接成功”;

}

 

void Client::onDisconnected(){

    qDebug()<<“断开连接”;

}

void Client::on_pushButton_clicked(){

    QString IPstr=ui->lineEdit->text();

    m_TcpSocket->connectToHost(IPstr,5555);//连接IP

    qDebug()<<“尝试连接IP”;

    m_TcpSocket->waitForConnected();//等待固定时长来连接

   

}

 

void Client::on_pushButton_2_clicked(){

    QString str=ui->lineEdit_2->text();

    m_TcpSocket->write(str.toLatin1());

    qDebug()<<“发送数据”;

}

 

void Client::on_pushButton_3_clicked(){

    m_TcpSocket->disconnectFromHost();//断开连接

}

 

服务器:

class MainWindow : public QMainWindow

{

    Q_OBJECT

public:

    explicit MainWindow(QWidget *parent = 0);

    ~MainWindow();

public slots:

    void onNewConnection();//收到请求连接信号触发

    void onReadMessage();//读取信息触发

private slots:

    void on_pushButton_clicked();//发送数据

    void on_pushButton_2_clicked();//断开连接

private:

    Ui::MainWindow *ui;

    QTcpServer*m_TcpServer;

    QTcpSocket*m_TcpClient;

};

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

    m_TcpServer=new QTcpServer;

    m_TcpServer->listen(QHostAddress::Any,5555);

    //新连接信号触发

    connect(m_TcpServer,SIGNAL(newConnection()),this,SLOT(onNewConnection()));

    m_TcpClient=m_TcpServer->nextPendingConnection();//获取连接进来的socket

    connect(m_TcpClient,SIGNAL(readyRead()),this,SLOT(onReadMessage()));

    connect(m_TcpClient,SIGNAL(connected()),this,SLOT(onReadMessage()));

 

    move(100,100);//设置窗口初始显示相对屏幕的位置

    Client*client=new Client;

    client->move(1000,100); //设置窗口初始显示相对屏幕的位置

    client->show();

}

void MainWindow::onNewConnection(){

    qDebug()<<“收到请求连接信号”;

    m_TcpClient=m_TcpServer->nextPendingConnection();//得到连接进来的Socket

    //有可读的信息,触发读取信息的槽函数

    connect(m_TcpClient,SIGNAL(readyRead()),this,SLOT(onReadMessage()));

    QString ipStr=m_TcpClient->peerAddress().toString();//获取对方的IP

}

void MainWindow::onReadMessage(){

    qDebug()<<“读取信息”;

    QByteArray ba=m_TcpClient->readAll();//接收数据

    ui->lineEdit->setText(ba.data());

}

void MainWindow::on_pushButton_clicked(){

    QString str=ui->lineEdit->text();

    m_TcpClient->write(str.toLatin1());//发送数据

}

void MainWindow::on_pushButton_2_clicked(){

    m_TcpClient->disconnectFromHost();//断开连接

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195409.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Vue 子组件调用父组件的属性,方法「建议收藏」

    Vue 子组件调用父组件的属性,方法「建议收藏」一、子组件调用父组件的方法子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了//父组件<template><div><label>我是父组件</label><child@fatherMethod=”test”></child>&…

  • linux查看80端口占用情况_centos查看端口命令

    linux查看80端口占用情况_centos查看端口命令前言平常使用linux,我们经常需要查看哪个服务占用了哪个端口,接下来就为大家介绍了2种Linux查看端口占用情况可以使用lsof和netstat命令。1.lsof-i:端口号用

  • mybatis逆向工程插件

    mybatis逆向工程插件一个简单的利用mybatis连接数据库生成实体和mapper的工程下面是项目结构图:首先lib引入jar包:GeneratorSqlmap.java:importjava.io.File;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importor…

  • s一般怎么称呼自己的m_“老公、老婆、亲爱的”?快来围观明星怎么称呼自己的另一半!…

    s一般怎么称呼自己的m_“老公、老婆、亲爱的”?快来围观明星怎么称呼自己的另一半!…每个夫妻相处方法不一样,大家怎么称呼习惯就怎么来,官方上会跟别人介绍,我的爱人,我的对象,我的老公,私下也会亲昵的叫baby。今天我们就来说说明星们是怎么称呼自己的另一半的!黄晓明和baby,在家里的时侯,黄晓明就叫baby为小孩儿,听起来是否是就有种自愿吃狗粮的感到?大家都知道,黄晓明是很喜好baby的,对baby也很宠爱,大家说baby演技欠好,黄晓明还赶忙着帮baby措辞。小编记得当初他们两…

  • 送你7个常用的服务器资源监控工具

    送你7个常用的服务器资源监控工具以这台鲲鹏服务器为例,先查看自己操作系统的发行版本(1)nmon:支持收集一段时间内,整机的CPU、磁盘、网络、内存等各项资源的使用情况。(2)perf:Linuxkernel自带的系统性能优化

  • 浅谈md5加密[通俗易懂]

    浅谈md5加密[通俗易懂]md5加密是我们生活中十分常见的加密算法。我是最近在写一个H5的项目时接触到的这个算法,这个算法极大的引起了我的好奇心,是登陆界面,要求是将用户输入的密码使用md5加密之后,再传回服务器,当时我十分不理解原因是什么.废话少说原因密码在前端进行加密,然后服务器使用摘要进行比对,这样在整个密码的校验过程中是在服务器端不知道明码的情况下进行的,极大的保证了密码的安全在避免文件内容被篡改

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号