void NetworkHandler::readPendingDatagrams() { while(udpSocket_->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket_->pendingDatagramSize()); udpSocket_->readDatagram(datagram.data(), datagram.size(), &receiver_, &udpPort_); processTheDatagram(datagram); } }
void LatencyMon::rvMsg() { while (rvMsgSock->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(rvMsgSock->pendingDatagramSize()); QHostAddress sender; quint16 senderPort; rvMsgSock->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); processTheDatagram(datagram); } }
void Server::readPendingDatagrams() { while (udpSocket->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket->pendingDatagramSize()); QHostAddress sender; quint16 senderPort; udpSocket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); processTheDatagram(datagram); } }
void //接受组播数据 CUdpReceive::receiveData() { boost::asio::ip::udp::endpoint senderEndpoint; m_cSocket.async_receive_from( boost::asio::buffer( m_cDataBuffer , Max_Lenght ) , senderEndpoint , [this](boost::system::error_code ec, std::size_t bytes_recvd ) { if (!ec && bytes_recvd > 0){ processTheDatagram(bytes_recvd); }else{ receiveData(); } }); }
int OSAPIUDPChannel::receive() { int numbytes; addr_len = sizeof their_addr; if ((numbytes = recvfrom(listenerSocket, buf, MAXBUFLEN-1 , 0, (struct sockaddr *)&their_addr, &addr_len)) == -1) return -1; datagram.resize(numbytes); datagram.setRawData(buf, numbytes); QHostAddress senderAddress(inet_ntop(their_addr.ss_family, getInAddr((struct sockaddr *)&their_addr), s, sizeof s)); quint16 senderPort = getInPort((struct sockaddr *) &their_addr); processTheDatagram(datagram,senderAddress,senderPort); return numbytes; }
void Messenger::onReadyRead() { while (_udp.hasPendingDatagrams()) { QByteArray datagram; datagram.resize(_udp.pendingDatagramSize()); QHostAddress sender; quint16 senderPort; _udp.readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); bool flag = true; for(int i=0; i < _myips.count(); ++i) if(sender.toString() == _myips[i].toString()) flag = false; if (flag) { logReceived(datagram, sender); processTheDatagram(datagram, sender); } } }