示例#1
0
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);
}
示例#2
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;
}
示例#3
0
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());
}
示例#4
0
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);
}