本文整理汇总了C++中SocketAddress::ToSockAddrStorage方法的典型用法代码示例。如果您正苦于以下问题:C++ SocketAddress::ToSockAddrStorage方法的具体用法?C++ SocketAddress::ToSockAddrStorage怎么用?C++ SocketAddress::ToSockAddrStorage使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SocketAddress
的用法示例。
在下文中一共展示了SocketAddress::ToSockAddrStorage方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoConnect
int PhysicalSocket::DoConnect(const SocketAddress& connect_addr)
{
if ((s_ == INVALID_SOCKET) && !Create(connect_addr.family(), SOCK_STREAM))
{
return SOCKET_ERROR;
}
sockaddr_storage addr_storage;
size_t len = connect_addr.ToSockAddrStorage(&addr_storage);
sockaddr* addr = reinterpret_cast<sockaddr*>(&addr_storage);
int err = ::connect(s_, addr, static_cast<int>(len));
UpdateLastError();
if (err == 0)
{
state_ = CS_CONNECTED;
}
else if (IsBlockingError(GetError()))
{
state_ = CS_CONNECTING;
enabled_events_ |= DE_CONNECT;
}
else
{
return SOCKET_ERROR;
}
enabled_events_ |= DE_READ | DE_WRITE;
return 0;
}
示例2: Bind
int PhysicalSocket::Bind(const SocketAddress& bind_addr)
{
sockaddr_storage addr_storage;
size_t len = bind_addr.ToSockAddrStorage(&addr_storage);
sockaddr* addr = reinterpret_cast<sockaddr*>(&addr_storage);
int err = ::bind(s_, addr, static_cast<int>(len));
if (err < 0)
{
UpdateLastError();
}
return err;
}
示例3: SendTo
int PhysicalSocket::SendTo(const void* buffer, size_t length, const SocketAddress& addr)
{
sockaddr_storage saddr;
size_t len = addr.ToSockAddrStorage(&saddr);
int sent = (int)::sendto(s_, static_cast<const char *>(buffer), static_cast<int>(length),
0,
reinterpret_cast<sockaddr*>(&saddr), static_cast<int>(len));
UpdateLastError();
MaybeRemapSendError();
if ((sent < 0) && IsBlockingError(GetError()))
{
enabled_events_ |= DE_WRITE;
}
return sent;
}