gpt4 book ai didi

c++ - 最简单的 QT TCP 客户端

转载 作者:IT老高 更新时间:2023-10-28 22:18:14 27 4
gpt4 key购买 nike

我想连接到一个监听服务器并传输一些数据。我查看了可用的示例,但它们似乎具有对我来说似乎没有多大帮助的额外功能(即连接、fortune 等)。这是我到目前为止的代码:

QTcpSocket t;
t.connectToHost("127.0.0.1", 9000);

假设服务器正在监听且健壮,我需要实现什么来发送数据类型为 QByteArray 的数据变量?

最佳答案

使用 QTcpSocket 非常简单。像你一样开始......

void MainWindow::connectTcp()
{
QByteArray data; // <-- fill with data

_pSocket = new QTcpSocket( this ); // <-- needs to be a member variable: QTcpSocket * _pSocket;
connect( _pSocket, SIGNAL(readyRead()), SLOT(readTcpData()) );

_pSocket->connectToHost("127.0.0.1", 9000);
if( _pSocket->waitForConnected() ) {
_pSocket->write( data );
}
}

void MainWindow::readTcpData()
{
QByteArray data = pSocket->readAll();
}

但请注意,从 TcpSocket 读取数据时,您可能会在不止一次传输中接收数据,即。当服务器向您发送字符串“123456”时,您可能会收到“123”和“456”。您有责任检查传输是否完成。不幸的是,这几乎总是导致你的类是有状态的:类必须记住它所期望的传输,它是否已经开始以及是否完成。到目前为止,我还没有想出一个优雅的方法来解决这个问题。

关于c++ - 最简单的 QT TCP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7923485/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com