通过套接字QT发送文件

时间:2017-01-15 14:39:23

标签: c++ qt

我尝试使用Q ++通过套接字发送数据文件但是服务器收到空数据流,你能帮助我吗?

QFile file("/Users/mathieu/Documents/test.wav");
if(!file.exists()) qDebug() << "not found file";
file.open(QIODevice::ReadWrite);
QByteArray data;
data.append(file.readAll());
file.close();
QUdpSocket udpsock;
udpsock.writeDatagram(data, QHostAddress::Any, 1441);

对于接收者:

QUdpSocket udp;
QByteArray buffer;
buffer.resize(udp.pendingDatagramSize());
QHostAddress sender;
qint16 senderPort;
udp.readDatagram(buffer.data(), buffer.size());
qDebug() << buffer;

但缓冲区是空的......我不明白为什么。

1 个答案:

答案 0 :(得分:0)

您需要初始化接收器UDP套接字。

void initUdp() {
    udpSocket = new QUdpSocket(this);
    udpSocket->bind(udpPort, QUdpSocket::ShareAddress);
    connect(udpSocket, SIGNAL(readyRead()), this, SLOT(processUdpData()));
}

void processUdpData() {
     while (udpSocket->hasPendingDatagrams()) {
          QByteArray buffer;
          buffer.resize(udpSocket->pendingDatagramSize());
          udpSocket->readDatagram(buffer.data(), buffer.size());
          qDebug() << buffer;
     }
}