本文整理汇总了C++中QUdpSocket::setParent方法的典型用法代码示例。如果您正苦于以下问题:C++ QUdpSocket::setParent方法的具体用法?C++ QUdpSocket::setParent怎么用?C++ QUdpSocket::setParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QUdpSocket
的用法示例。
在下文中一共展示了QUdpSocket::setParent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: msg
//private
void Socks5UDPAssociateState::handleIP()
{
//Evaluate the IP/port combo --- are we allowed to relay for it?
bool allowedToRelay = true;
if (!allowedToRelay)
{
QSharedPointer<Socks5ReplyMessage> msg(new Socks5ReplyMessage(Socks5ReplyMessage::DisallowedByRules,
QHostAddress::Any,
0));
QString sendError;
if (!_parent->sendMessage(msg,&sendError))
qWarning() << this << "failed to notify client of access denied. Error:" << sendError;
_parent->close();
return;
}
//If we're allowed, just go ahead and try to set it up!
QUdpSocket::BindMode bindMode = QUdpSocket::DefaultForPlatform;
QUdpSocket * clientFacingSocket = new QUdpSocket(this);
QUdpSocket * remoteFacingSocket = new QUdpSocket(this);
if (!clientFacingSocket->bind(QHostAddress::Any,0,bindMode) ||
!remoteFacingSocket->bind(QHostAddress::Any,0,bindMode))
{
qWarning() << "Failed to bind UDP socket";
QSharedPointer<Socks5ReplyMessage> msg(new Socks5ReplyMessage(Socks5ReplyMessage::GeneralError,
QHostAddress::Any,
0));
QString sendError;
if (!_parent->sendMessage(msg,&sendError))
qWarning() << this << "failed to notify client of failed UDP bind";
_parent->close();
return;
}
//Send a success reply to the client with the ip/port of the client-facing UDP sock
QSharedPointer<Socks5ReplyMessage> msg(new Socks5ReplyMessage(Socks5ReplyMessage::Success,
_parent->myBoundAddress(),
clientFacingSocket->localPort()));
qDebug() << _parent->myBoundAddress();
QString sendError;
if (!_parent->sendMessage(msg,&sendError))
{
qWarning() << "Failed to send successful UDP bind reply. Error:" << sendError;
_parent->close();
return;
}
QByteArray bytes;
msg->toBytes(&bytes);
//Transition to Socks5UDPAssociatedState
Socks5UDPAssociatedState * nState = new Socks5UDPAssociatedState(clientFacingSocket,
remoteFacingSocket,
_parent);
clientFacingSocket->setParent(nState);
remoteFacingSocket->setParent(nState);
_parent->setState(nState);
return;
}