问题描述
void socketTest::test()
{
socket = new QTcpsocket(this);
socket->setReadBufferSize(1000000);
connect(socket,SIGNAL(connected()),this,SLOT(connected()));
connect(socket,SIGNAL(disconnected()),SLOT(disconnected()));
connect(socket,SIGNAL(readyRead()),SLOT(readyRead()));
connect(socket,&QTcpsocket::bytesWritten,&socketTest::bytesWritten);
qDebug()<<"Connecting...";
socket->setProxy(QNetworkProxy::noproxy);
socket->connectToHost("192.168.1.20",5017);
if(!socket->waitForConnected(1000)){
qDebug()<<"Error..." <<socket->errorString();
}
}
这里是插槽
void socketTest::connected(){
qDebug()<<"\r\nConnected";
socket->write("Hello world");
}
void socketTest::disconnected(){
qDebug()<<"\r\ndisconnected";
}
void socketTest::bytesWritten(qint64 bytes){
qDebug()<<"\r\nyeah ha";
qDebug()<<"We wrote" << bytes;
}
qint64 readBytes = 0;
void socketTest::readyRead(){
qDebug()<<"\r\nReading...."<<readBytes;
QByteArray Ba;
Ba = socket->readAll();
readBytes+= Ba.size();
qDebug()<< Ba.size();
}
问题是,当我运行代码时,一切正常,我会将 11 个字节写入服务器,服务器有一个按钮,如果我打开它,它将不断向客户端发送大量数据,直到我把它关掉,所以如果我注释掉
socket->write("Hello world");
当 socket->write 被注释时,我会得到常量数据 客户端会连续获取所有数据,但是当我向服务器写一些东西时(当 socket->write 没有被注释时),当我打开传输数据时,它只会得到几个数据包, 我用hercules_3-2-8(https://www.hw-group.com/software/hercules-setup-utility)测试了服务器,服务器可以连续接受读写数据,
所以我做错了什么,所以如果我也向服务器写一些东西,readyRead 在几个数据包后不会得到任何信号。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)