void Sender::SendMessage()
{
QByteArray datagram;
message = dialogEdit->toHtml();
QDataStream out(&datagram,QIODevice::WriteOnly);
flag = 0;
out << flag;
out << message ;
showEdit->append(message);
send_Socket->writeDatagram(datagram.data(), qint64(datagram.size()),
QHostAddress("127.0.0.1"), 5050);
dialogEdit->clear();
}
void Sender::RecMessage()
{
while (receive_Socket->hasPendingDatagrams())
{
int flag;
QByteArray datagram;
datagram.resize(receive_Socket->pendingDatagramSize());
receive_Socket->readDatagram(datagram.data(), datagram.size());
QDataStream in(&datagram, QIODevice::ReadOnly);
in >> flag;
if(flag == 0) //flag是标志,0 表示接收的是普通的信息, 1 表示接收的是文件
{
in >> message;
showEdit->append(message);
continue;
}
else
{
in >> fileName;
QFile file(fileName);
QByteArray filecontent;
in >> filecontent;
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) //以只写的方式打开文件
return;
QTextStream out(&file);
out << filecontent;
}//else
}//while
}
void Sender::openFile()
{
fileName = QFileDialog::getOpenFileName(this,tr("Open File"), QDir::currentPath());
//获得要打开的文件名
sendfile = new QFile(fileName);//声明一个指向该文件的指针
if(sendfile->open(QIODevice::ReadOnly))
{
fileData = sendfile->readAll();
emit DataReady();
}
else
{
QMessageBox::about(this,tr("错误"),fileName);
}
}
void Sender::SendFile()
{
QByteArray datagram;
int flag = 1;
QDataStream out(&datagram,QIODevice::WriteOnly);
out << flag;
out << fileName;
out << fileData;
send_Socket->writeDatagram(datagram.data(), datagram.size(),
QHostAddress("127.0.0.1"), 5050);
}
=====================================================
我的意图是两客户端间通信,发送消息或传送文件
消息发送已经初步完成
但文件发送不能实现
求达人指点
先谢了
[ 此贴被XChinux在2006-05-07 22:30重新编辑 ]