Пример #1
0
ssize_t
SocketDescriptor::Read(void *buffer, size_t length,
                       StaticSocketAddress &address)
{
  int flags = 0;
#ifdef HAVE_POSIX
  flags |= MSG_DONTWAIT;
#endif

  socklen_t addrlen = address.GetCapacity();
  ssize_t nbytes = ::recvfrom(Get(), (char *)buffer, length, flags,
			      address.GetAddress(), &addrlen);
  if (nbytes > 0)
    address.SetSize(addrlen);

  return nbytes;
}