我尝试使用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;
但缓冲区是空的......我不明白为什么。
答案 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;
}
}