【发布时间】:2021-01-20 08:57:27
【问题描述】:
我正在尝试通过 UDP 进行客户端到客户端的通信。我正在使用QUdpSocket 来做到这一点。
我的第一个客户端的 IP 是 127.0.0.2,第二个客户端的 IP 是 127.0.0.3。
在我的第一个客户端中,我想发送数据,所以我这样做:
socket = new QUdpSocket(this);
socket->bind(QHostAddress("127.0.0.2"), (quint16)actual_port);
...
Data = QByteArray::fromRawData((const char *)stockR.data, crypt_packet.size_struct);
socket->writeDatagram(Data, QHostAddress("127.0.0.3"), (quint16)port_other);
在我的第二个客户中,我有这个:
socket = new QUdpSocket(this);
socket->bind(QHostAddress("127.0.0.3"), (quint16)port_second);
...
QByteArray buffer;
buffer.resize(socket->pendingDatagramSize());
QHostAddress sender;
quint16 senderPort;
socket->readDatagram(buffer.data(), buffer.size(), &sender, &senderPort);
但我无法从readDatagram() 收到我的数据,我不知道为什么。
我在双方都做每一个功能,这意味着我在两个客户端上读写(这是为了进行 VoIP 呼叫)。
有人知道我的错误是什么吗?
【问题讨论】:
-
最后一个块是怎么调用的?是响应
readyRead信号吗?socket->hasPendingDatagrams()是真的吗? -
我不使用 socket->hasPendingDatagrams 和 readyRead 也没有。
标签: c++ qt sockets qtnetwork qudpsocket