gpt4 book ai didi

c++ - 套接字服务器无法接收客户端发送的消息

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:38 26 4
gpt4 key购买 nike

我在 Windows 7 中使用 Qt creator 5.5.1。

编译器是VC 2010 32Bits。

我写了一个套接字客户端。可以正常连接,但无法将消息发送到服务器。

调试程序没有报错

char flash_result_data[] ={'0', '0', '0', '0', '0', '0', '0', '0'};


void MainWindow::on_pushBtn_LoadCfg_clicked()
{


if (tcpClient == NULL)
{
tcpClient = new QTcpSocket;
tcpClient->connectToHost(ui->txtIPServer->text(),ui->txtPortServer->text().toInt());

Sleep(1000);
QObject::connect(tcpClient,SIGNAL(readyRead()),this, SLOT(readMessageFromTCPServer()));
QTimer::singleShot(100000, this, SLOT(fun_timer()));
}
}
void MainWindow::readMessageFromTCPServer()
{
QObject::connect(this, SIGNAL( MySignal() ),this, SLOT( MySlot() ) );



std::string r="start";

QByteArray qba;

qba= tcpClient->readAll();
if (qba.contains(r.c_str()))
{
emit MySignal();
}
return;

}
void MainWindow::fun_timer()
{

int flash_result_data_size = sizeof(flash_result_data) / sizeof(char);
std::string flash_result_data_str = convertToString(flash_result_data, flash_result_data_size);
tcpClient->write(flash_result_data_str.c_str(),strlen((flash_result_data_str.c_str())));

}

当我调试程序时,套接字可以正常连接。运行此行后: tcpClient->write(flash_result_data_str.c_str(),strlen((flash_result_data_str.c_str()))); ,没有错误发生,但是没有从套接字服务器收到消息.

socket服务器是别人开发的,在其他类似项目中多次使用,所以服务器肯定没问题。问题是我的客户端代码。但是我不知道我的错误在哪里。

最佳答案

在文件顶部添加 #include<QDebug> .

在 MainWindow 类头文件中,添加 QByteArray qba;作为私有(private)成员变量。

将您的 readMessageFromTCPServer 更改为:

void MainWindow::readMessageFromTCPServer()
{
QObject::connect(this, SIGNAL( MySignal() ),this, SLOT( MySlot() ) );


std::string r="start";

qba.append(tcpClient->readAll());
qDebug() << "BUFFER:" << QString::fromUtf8(qba);

if (qba.contains(r.c_str()))
{
emit MySignal();
}
return;

}

qDebug输出以查看如何接收数据。另外,我认为这种联系是没有必要的QObject::connect(this, SIGNAL( MySignal() ),this, SLOT( MySlot() ) ); .

你可以调用MySlot();因为信号和槽都是同一个对象的一部分。

if (qba.contains(r.c_str()))
{
MySlot();
}

关于c++ - 套接字服务器无法接收客户端发送的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59173753/

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