Qt 如果用tcp/ip接收一串16进制的数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 如果用tcp/ip接收一串16进制的数字相关的知识,希望对你有一定的参考价值。

用write方法将值传出去了,当对端发送回来的时候,我用read方法怎么收不到数据啊。。

参考技术A 您能否将问题描述的清楚一点,或者贴一段你写的代码。
一般来说,如果你不是阻塞等待的话,那么就要等触发readyRead的时候再去read数据。

QT TCP/IP

QT 网络通信(TCP/IP)

服务端:

  一、监听新的客户端接入(QTcpServer)

    重写函数 incomingConnection(qintptr socketDescriptor)

  二、服务端每个客户的监听(QTcpSocket 完成三件事1、监听是否有数据传来。2、监听连接是否中断。3、写数据)

    1、数据传来时有  readyRead()  信号。将 都数据函数和  此信号关联。

    2、连接中断时有 disconnected() 信号。将 中断时处理的事件函数与此信号关联。

    3、write(msg.toLatinl(),length) 函数实现。

客户端:

    一、客户端完成5件事(QTcpSocket 1、连接服务器。2、监听连接服务器是否成功。3、监听是否有数据传来。4、监听连接是否中断。5、写数据)

      1、connectToHost(ip,port);  此函数完成连接服务器。

      2、connected()  连接服务器成功时此信号发出。

      3、readyRead() 有数据传来时此信号发出。

      4、disconnected() 连接中断时此信号发出。

      5、write(msg.toLatinl(),length) 函数实现。

附:读数据的函数

void TcpClient::dataReceived()
{
    while(tcpSocket->bytesAvailable()>0)
    {
        QByteArray datagram;
        datagram.resize(tcpSocket->bytesAvailable());

        tcpSocket->read(datagram.data(),datagram.size());

        QString msg=datagram.data();
        //contentListWidget->addItem(msg.left(datagram.size()));
    }
}

 

    

    

  

以上是关于Qt 如果用tcp/ip接收一串16进制的数字的主要内容,如果未能解决你的问题,请参考以下文章

如何将labview tcp/ip接收到的平化字符串数据还原

Qt如何将串口接收到十六进制转换为十进制,用这个函数不行int hex = str.toInt(&ok, 16);

IP校验和

考研计算机 | 计算机网络-TCP协议与IP协议格式联结性问题试题解析

基于MFC的TCP报文通信如何实现16进制的发送

qt中16进制分高低字节传输