//client.cpp
//..........................
connect(senderButton, SIGNAL(clicked()), this, SLOT(sendMessageSlot()));
void Send::sendMessageSlot()
{
out << info.fileName() << currentSize;
while(!file->atEnd())
{
char schar[2048];
if (currentSize >= 2048)
{
file->read(schar, 2048);
client->write(schar, 2048);
currentSize-=2048;
}
else if(currentSize < 2048)
{
file->read(schar, currentSize);
client->write(schar, currentSize);
break;
}
}
file->close();
}
------------------------------------------------------------------------------------
//server.cpp
//...........
connect(server, SIGNAL(readyRead()), this, SLOT(newMessageSlot()));
void Receive::newMessageSlot()
{
if (boo_new)
{
in >> name >> allSize;
boo_new = false;
}
file
->open
(QIODevice::WriteOnly |QIODevice
::Append);
if (server->isReadable())
{
quint64 size = server->bytesAvailable();
char buf[size];
server->read(buf, size);
file->write(buf, size);
readSize += size;
}
file->close();
delete file;
if (readSize == allSize)
{
return;
}
}
//client.cpp
//..........................
connect(senderButton, SIGNAL(clicked()), this, SLOT(sendMessageSlot()));
void Send::sendMessageSlot()
{
QDataStream out(client);
QFileInfo info(file->fileName());
out << info.fileName() << currentSize;
while(!file->atEnd())
{
char schar[2048];
if (currentSize >= 2048)
{
file->read(schar, 2048);
client->write(schar, 2048);
currentSize-=2048;
}
else if(currentSize < 2048)
{
file->read(schar, currentSize);
client->write(schar, currentSize);
break;
}
}
file->close();
}
------------------------------------------------------------------------------------
//server.cpp
//...........
connect(server, SIGNAL(readyRead()), this, SLOT(newMessageSlot()));
void Receive::newMessageSlot()
{
if (boo_new)
{
QDataStream in(server);
in >> name >> allSize;
boo_new = false;
}
file = new QFile(QString("C:\\%1").arg(name), this);
file->open(QIODevice::WriteOnly |QIODevice::Append);
if (server->isReadable())
{
quint64 size = server->bytesAvailable();
char buf[size];
server->read(buf, size);
file->write(buf, size);
readSize += size;
}
file->close();
delete file;
if (readSize == allSize)
{
QMessageBox::warning(this, "ok", QString::fromLocal8Bit("over"));
return;
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks