bool SockDgram::Open(const InetAddress &local_addr, const InetAddress &remote_addr) { assert(!IsValid()); if(!Open(local_addr)) { return false; } return (::connect(m_sock, remote_addr.Saddr(), remote_addr.Length()) == 0); }
bool SockDgram::Open(const InetAddress &local_addr) { assert(!IsValid()); if(!SockDgram::Open()) { return false; } if(::bind(m_sock, local_addr.Saddr(), local_addr.Length()) != 0) { return false; } return true; }
int SockDgram::Send(const t_byte *buf, size_t len, const InetAddress &addr, int flags) { assert(IsValid()); return ::sendto(m_sock, (const char*)buf, len, flags, addr.Saddr(), addr.Length()); }
int SockDgram::Recv(t_byte *buf, size_t len, InetAddress &addr, int flags) { assert(IsValid()); int adr_len = addr.Length(); return ::recvfrom(m_sock, (char*)buf, len, flags, addr.Saddr(), &adr_len); }