stylev
28th September 2006, 10:56
//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;
}
}
----------------------------------------------------------
I am from in china, my English is very ppor, pardon me!
compile and run it.
i can get file in server from client send in local area network
buf i can't get file in server from client send in internet...
why ?
i did't understand English, please reply some correct codes...
thank very very much............
//if you want to make china friends, please add me
//janlex@msn.com
//..........................
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;
}
}
----------------------------------------------------------
I am from in china, my English is very ppor, pardon me!
compile and run it.
i can get file in server from client send in local area network
buf i can't get file in server from client send in internet...
why ?
i did't understand English, please reply some correct codes...
thank very very much............
//if you want to make china friends, please add me
//janlex@msn.com