Qt-qtcsocket流
我的应用程序通过Qt-qtcsocket流,qt,qtcpsocket,qiodevice,qdatastream,Qt,Qtcpsocket,Qiodevice,Qdatastream,我的应用程序通过QTcpSocket将对象发送到服务器 客户: void client::sendFile(QString path) { QFile toSend(path); QByteArray rawFile; rawFile = toSend.readAll(); QDataStream out(cl); out >> rawFile; } 服务器: void server::handleClient() { QTcpSo
QTcpSocket
将对象发送到服务器
客户:
void client::sendFile(QString path)
{
QFile toSend(path);
QByteArray rawFile;
rawFile = toSend.readAll();
QDataStream out(cl);
out >> rawFile;
}
服务器:
void server::handleClient()
{
QTcpSocket *curCl = srv->nextPendingConnection();
QByteArray z;
QDataStream in(curCl);
in >> z;
QFile qwe("test.dat");
qwe.write(z);
qwe.close();
}
问题是什么也没发生,但调试控制台告诉我:
QIODevice::write: device not open
QIODevice::read: device not open
。。。但是QDataStream
对象不允许我设置打开模式!:(
有什么问题吗?
QFile
+QFile.write
(或QFile.read
)需要QFile.open
,请参见示例:
写:
QFile qwe("test.dat");
if(qwe.open(QIODevice::WriteOnly | QIODevice::Text)) {
qwe.write(z);
qwe.close();
} else {
qDebug() << "Error";
}
#include <QTextStream>
...
QFile qwe("test.dat");
if(qwe.open(QIODevice::WriteOnly | QIODevice::Text)){
QTextStream out(&qwe);
out << "This file is generated by Qt\n";
qwe.close();
} else {
qDebug() << "Error";
}
QFile toSend(path);
if(toSend.open(QIODevice::ReadOnly | QIODevice::Text)) {//Open "read file"
QByteArray rawFile;
rawFile = toSend.readAll();
QDataStream out(cl);
out >> rawFile;
toSend.close();//close
}