当前位置: 首页>>代码示例>>C++>>正文


C++ QUdpSocket::setParent方法代码示例

本文整理汇总了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;
}
开发者ID:andras-tim,项目名称:Qt-Socks-Server,代码行数:62,代码来源:Socks5UDPAssociateState.cpp


注:本文中的QUdpSocket::setParent方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。