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();//断开连接

}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm py文件运行后停止按钮变成了灰色[通俗易懂]

    pycharm py文件运行后停止按钮变成了灰色[通俗易懂]这两天被这个问题折磨得要死,把pycharm卸载了还是没解决,后来终于在一篇博客中看见,然后终于解决了问题界面如下:1.每次运行后都会跳出一个pythonconsole,并且前面还会显示一大堆奇怪信息:importsys;print(‘Python%son%s’%(sys.version,sys.platform))sys.path.extend2.右上角…

    2022年8月26日
    8
  • 向量的夹角余弦公式_向量空间模型(VSM)的余弦定理公式(用余弦定理来表示向量之间的相似度)…[通俗易懂]

    向量的夹角余弦公式_向量空间模型(VSM)的余弦定理公式(用余弦定理来表示向量之间的相似度)…[通俗易懂]相信很多学习向量空间模型(VectorSpaceModel)的人都会被其中的余弦定理公式所迷惑..因为一看到余弦定理,肯定会先想起初中时的那条最简单的公式cosA=a/c(邻边比斜边),见下图:但是,初中那条公式是只适用于直角三角形的,而在非直角三角形中,余弦定理的公式是:cosA=(c2+b2-a2)/2bc不过这条公式也和向量空间模型中的余弦定理公式不沾边,迷惑..引用吴军老师的数…

    2025年7月9日
    4
  • springmvc的工作流程

    springmvc的工作流程1、springmvc工作原理图2、springmvc工作流程1、用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理(并未调用Controller,只是得知)3、DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controlle

    2022年6月4日
    26
  • QStringList的应用

    QStringList的应用QStringList初始化QStringListqstrList;qstrList<<“Android”<<“QtCreator”<<“Java”<<“C++”;QStringListIteratorstrIterator(qstrList);while(strIterator.hasNext())qDebug()<<strIterator.next()<<endl;这里我

    2022年5月6日
    45
  • Java封装详解,很简单

    Java封装详解,很简单大家好,今天来给大家分享一下Java封装面向对象有三大特征:1.封装2.继承3.多态我们来讲Java封装,它也是Java面向对象的三大特征之一封装,大白话的解释就是,把一个东西,装到箱子了,只留小小的口,用于外界访问画一个图就是该露的露,该藏的藏我们在程序设计的过程中要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己来完成,不允许外部干涉,低耦合:就是,仅暴露少量的方法给外部使用封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而是应该通过操作接口来访问

    2022年7月7日
    29
  • 数据结构:Binary and other trees(数据结构,算法及应用(C++叙事描述语言)文章8章)

    数据结构:Binary and other trees(数据结构,算法及应用(C++叙事描述语言)文章8章)

    2022年1月16日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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