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


C++ SockAddr::toNative方法代码示例

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


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

示例1: bind

SocketError SocketImpl::bind(const SockAddr& sockAddr) {
    if (socket == INVALID_SOCKET) {
        return SocketError::NotInitialized;
    }

    sockaddr_storage storage;
    sockAddr.toNative(&storage);

    // For bind we also want to set the SO_EXCLUSIVEADDRUSE option
    DWORD opt = 1;
    int optRes = ::setsockopt(socket, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, (const char*)&opt, sizeof(DWORD));
    if (optRes != 0) {
        return getSocketError(::WSAGetLastError());
    }

    int bindRes = ::bind(socket, (const sockaddr*)&storage, sizeof(sockaddr_storage));
    if (bindRes != 0) {
        return getSocketError(::WSAGetLastError());
    }

    // And then we need to fetch back the bound addr/port
    int nameLen = sizeof(sockaddr_storage);
    int nameRes = ::getsockname(socket, (sockaddr*)&storage, &nameLen);
    if (nameRes != 0) {
        return getSocketError(::WSAGetLastError());
    }

    localAddr = SockAddr::fromNative(&storage);

    return SocketError::Ok;
}
开发者ID:sconger,项目名称:cupcake,代码行数:31,代码来源:SocketImpl_win.cpp

示例2: connect

SocketError SocketImpl::connect(const SockAddr& sockAddr) {
    if (socket == INVALID_SOCKET) {
        return SocketError::NotInitialized;
    }

    sockaddr_storage storage;
    sockAddr.toNative(&storage);

    // For reasons that I presume have to do with DisconnectEx, ConnectEx
    // requires a bound socket
    sockaddr_storage addrAny;
    addrAny.ss_family = storage.ss_family;
    INETADDR_SETANY((sockaddr*)&addrAny);

    int bindRes = ::bind(socket, (const sockaddr*)&addrAny, sizeof(sockaddr_storage));
    if (bindRes != 0) {
        return getSocketError(::WSAGetLastError());
    }

    SocketError res;
    connect_co(sockAddr, &res).get();
    return res;
}
开发者ID:sconger,项目名称:cupcake,代码行数:23,代码来源:SocketImpl_win.cpp


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