QTcpSocket 未知错误
QTcpSocket unknown error
我想从客户端向服务器发送数据,当我尝试连接到 serevr 时,客户端显示未知错误,并且没有发送数据
它只显示空字符串 "",
任何帮助将不胜感激。
代码如下:
//客户端
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
tcpSocket = new QTcpSocket(this);
connect(tcpSocket, SIGNAL(connected()), this, SLOT(connected()));
QHostAddress ha;
ha.setAddress("myIP");
tcpSocket->connectToHost(ha, 6401);
if(!tcpSocket->waitForConnected(3000)) {
ui->lineEdit->setText(tcpSocket->errorString());
}
else
ui->lineEdit->setText("connected");
}
void Widget::connected()
{
tcpSocket->write("hello this is client\r\n");
tcpSocket->flush();
tcpSocket->waitForBytesWritten(3000);
tcpSocket->close();
}
//服务器
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
tcpServer = new QTcpServer(this);
connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection()));
if(!tcpServer->listen(QHostAddress::Any, 6401)) {
ui->lineEdit->setText("server not started");
}
else
ui->lineEdit->setText("server started");
}
void Widget::newConnection()
{
QTcpSocket *tcpSocket= tcpServer->nextPendingConnection();
qDebug() << tcpSocket->readAll();
tcpSocket->waitForReadyRead(3000);
tcpSocket->close();
}
问题是:
//顺序错误
qDebug() << tcpSocket->readAll();
tcpSocket->waitForReadyRead(3000);
//正确顺序:
tcpSocket->waitForReadyRead(3000);
qDebug() << tcpSocket->readAll();
我想从客户端向服务器发送数据,当我尝试连接到 serevr 时,客户端显示未知错误,并且没有发送数据
它只显示空字符串 "",
任何帮助将不胜感激。
代码如下:
//客户端
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
tcpSocket = new QTcpSocket(this);
connect(tcpSocket, SIGNAL(connected()), this, SLOT(connected()));
QHostAddress ha;
ha.setAddress("myIP");
tcpSocket->connectToHost(ha, 6401);
if(!tcpSocket->waitForConnected(3000)) {
ui->lineEdit->setText(tcpSocket->errorString());
}
else
ui->lineEdit->setText("connected");
}
void Widget::connected()
{
tcpSocket->write("hello this is client\r\n");
tcpSocket->flush();
tcpSocket->waitForBytesWritten(3000);
tcpSocket->close();
}
//服务器
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
tcpServer = new QTcpServer(this);
connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection()));
if(!tcpServer->listen(QHostAddress::Any, 6401)) {
ui->lineEdit->setText("server not started");
}
else
ui->lineEdit->setText("server started");
}
void Widget::newConnection()
{
QTcpSocket *tcpSocket= tcpServer->nextPendingConnection();
qDebug() << tcpSocket->readAll();
tcpSocket->waitForReadyRead(3000);
tcpSocket->close();
}
问题是:
//顺序错误
qDebug() << tcpSocket->readAll();
tcpSocket->waitForReadyRead(3000);
//正确顺序:
tcpSocket->waitForReadyRead(3000);
qDebug() << tcpSocket->readAll();