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


C++ Address::af方法代码示例

本文整理汇总了C++中Address::af方法的典型用法代码示例。如果您正苦于以下问题:C++ Address::af方法的具体用法?C++ Address::af怎么用?C++ Address::af使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Address的用法示例。


在下文中一共展示了Address::af方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: send

int UDPSocket::send(const char* data, std::size_t len,
                    const Address& peerAddress, int /* flags */)
{
    TraceS(this) << "Send: " << len << ": " << peerAddress << endl;
    assert(Thread::currentID() == tid());
    // assert(len <= net::MAX_UDP_PACKET_SIZE);

    if (_peer.valid() && _peer != peerAddress) {
        ErrorS(this) << "Peer not authorized: " << peerAddress << endl;
        return -1;
    }

    if (!peerAddress.valid()) {
        ErrorS(this) << "Peer not valid: " << peerAddress << endl;
        return -1;
    }

    int r;
    auto sr = new internal::SendRequest;
    sr->buf = uv_buf_init((char*)data, len); // TODO: memcpy data?
    r = uv_udp_send(&sr->req, ptr<uv_udp_t>(), &sr->buf, 1, peerAddress.addr(),
                    UDPSocket::afterSend);

#if 0
    switch (peerAddress.af()) {
    case AF_INET:
        r = uv_udp_send(&sr->req, ptr<uv_udp_t>(), &sr->buf, 1, peerAddress.addr(), UDPSocket::afterSend);
        break;
    case AF_INET6:
        r = uv_udp_send6(&sr->req, ptr<uv_udp_t>(), &sr->buf, 1,
            *reinterpret_cast<const sockaddr_in6*>(peerAddress.addr()), UDPSocket::afterSend);
        break;
    default:
        throw std::runtime_error("Unexpected address family");
    }
#endif
    if (r) {
        ErrorS(this) << "Send failed: " << uv_err_name(r) << endl;
        setUVError("Invalid UDP socket", r);
    }

    // R is -1 on error, otherwise return len
    return r ? r : len;
}
开发者ID:,项目名称:,代码行数:44,代码来源:

示例2: bind

void UDPSocket::bind(const Address& address, unsigned flags) 
{    
    TraceS(this) << "Binding on " << address << endl;

    int r;
    switch (address.af()) {
    case AF_INET:
        r = uv_udp_bind(ptr<uv_udp_t>(), address.addr(), flags);
        break;
    //case AF_INET6:
    //    r = uv_udp_bind6(ptr<uv_udp_t>(), address.addr(), flags);
    //    break;
    default:
        throw std::runtime_error("Unexpected address family");
    }

    // Throw and exception of error
    if (r)
        setAndThrowError("Cannot bind UDP socket", r); 
    
    // Open the receiver channel
    recvStart();
}
开发者ID:ComputerVisionWorks,项目名称:libsourcey,代码行数:23,代码来源:udpsocket.cpp


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