int getpeername(UDTSOCKET u, out IPAddress addr, out int namelen)
{
namelen = 0;
if (UDTSTATUS.CONNECTED != getStatus(u))
throw new CUDTException(2, 2, 0);
UdtSocket s = locate(u);
if (null == s)
throw new CUDTException(5, 4, 0);
if (!s.m_pUDT.m_bConnected || s.m_pUDT.m_bBroken)
throw new CUDTException(2, 2, 0);
if (AddressFamily.InterNetwork == s.m_iIPversion)
namelen = sizeof(sockaddr_in);
else
namelen = sizeof(sockaddr_in6);
// copy address information of peer node
memcpy(name, s.m_pPeerAddr, *namelen);
addr = s.m_PeerAddr;
return 0;
}