本机可以收得到。
可其他机就不行!! 下面代码(传图功能):
void MainWindow:penImage()
{
image = QFileDialog::getOpenFileName(this, tr("Open Image File..."),
"./image/", tr("Image-Files (*.png *.gif *.bmp *.jpeg *.jpg)"));
QFile::copy(image, QString("image/") + QFileInfo(image).fileName());
if (image.isEmpty())
{
return;
}
writeData(4);
ui->txtInput->append("<img src='image/" + QFileInfo(image).fileName() + "' />");
}
void MainWindow::writeData(int flag)
{
QByteArray datagram;
QDataStream out(&datagram ,QIODevice::WriteOnly);
QString address = getIP();
out << address << QHostInfo::localHostName() << flag;
//广播图片
if(flag == 4)
{
out << QFileInfo(image).fileName();
QImageReader imageReader(image);
imageReader.setFormat(QFileInfo(image).suffix().toAscii());
out << imageReader.read();
}
udpSocket->writeDatagram(datagram.data(),qint64(datagram.size()),
QHostAddress::Broadcast,quint16(defaultPort));
}
void MainWindow::receiveMessage()
{
while(udpSocket->hasPendingDatagrams())
{
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize());
udpSocket->readDatagram(datagram.data(), qint64(datagram.size()));
QDataStream in(&datagram,QIODevice::ReadOnly);
in >> receiveHostIP >> receiveHostName >> receiveFlag;
bool bb = ui->tableWidget->findItems(receiveHostIP,Qt::MatchExactly).isEmpty();
if(receiveFlag == 4)
{
QString tempFileName;
in >> tempFileName;
tempFileName = QString(("image/") + tempFileName);
QImage image;
in >> image;
QImageWriter imageWrite(tempFileName);
imageWrite.setFormat(QFileInfo(tempFileName).suffix().toAscii());
imageWrite.write(image);
ui->txtBrowser->append("<img src='image/" + tempFileName + "' />");
continue;
}