是否有任何簡單的方法發送文件到服務器與文件名包括在服務器和客戶端的文件名是完全一樣的?如何通過QTCPSocket發送文件及其文件名?
這裏是我的代碼
發件人
QString path = QApplication::applicationDirPath()+"/belajardansa.bmp";
QFile inputFile(path);
QByteArray read ;
inputFile.open(QIODevice::ReadOnly);
while(1)
{
read.clear();
read = inputFile.read(32768*8);
qDebug() << "Read : " << read.size();
if(read.size()==0)
break;
qDebug() << "Written : " << socket->write(read);
socket->waitForBytesWritten();
read.clear();
}
inputFile.close();
接收機
QTcpSocket* socket = static_cast<QTcpSocket*>(sender());
QBuffer* buffer = buffers.value(socket);
QByteArray read = socket->read(socket->bytesAvailable());
qDebug() << "Read : " << read.size();
QFile file( ???); // what should I put in the bracket???
if(!(file.open(QIODevice::Append)))
{
qDebug("File cannot be opened.");
exit(0);
}
file.write(read);
file.close();
謝謝你的迴應Hank, 你的第一個建議對我來說有點複雜因爲我是C++和Qt的新手。你能給我一個示例代碼來將數據結構轉換爲QByteArray嗎? 關於您的第二個建議, 如何處理套接字數據,以便服務器可以識別套接字數據是否包含文件名或數據。 –