Return TypeFunction nameArguments
hzEcodehzUdpClient::Connect(const hzString&,unsigned int,bool,)

Declared in file: hzUdpClient.h
Defined in file : hzUdpClient.cpp

Function Logic:

0:START 1:tv tv m_Hostname m_nPort 2:!Hostname 3:Return E_ARGUMENT 4:gethostbyname m_pHost 5:!m_pHost 6:h_errno==TRY_AGAIN 7:Return E_DNS_RETRY 8:h_errno==HOST_NOT_FOUND 9:Return E_DNS_NOHOST 10:h_errno==NO_RECOVERY 11:Return E_DNS_FAILED 12:h_errno==NO_DATA||h_errno==NO_ADDRESS 13:Return E_DNS_NODATA 14:Return E_DNS_FAILED 15:m_nPort==0 16:Return E_ARGUMENT 17:m_SvrLen memset m_SvrAddr memcpy htons m_SvrAddr 18:(m_nSock=socket(AF_INET,SOCK_DGRAM,0))<0 19:Return E_NOSOCKET 20:setsockopt(m_nSock,SOL_SOCKET,SO_SNDTIMEO,&tv,sizeof(tv))<0 21:Return E_NOSOCKET 22:setsockopt(m_nSock,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv))<0 23:Return E_NOSOCKET 24:Return E_OK

Function body:

hzEcode hzUdpClient::Connect (const hzString& Hostname, unsigned int nPort, bool bLocal)
{
   _hzfunc("hzUdpClient::Connect") ;
   timeval tv ;
   tv.tv_sec = 20;
   tv.tv_usec = 0;
   /*
   **  ** Initialize
   **      */
   m_Hostname = Hostname ;
   m_nPort = nPort ;
   if (!Hostname)
   {
       hzerr(E_ARGUMENT, "Hostname not set") ;
       return E_ARGUMENT ;
   }
   m_pHost = gethostbyname(*m_Hostname) ;
   if (!m_pHost)
   {
       if (h_errno == TRY_AGAIN)       return E_DNS_RETRY ;
       if (h_errno == HOST_NOT_FOUND)  return E_DNS_NOHOST ;
       if (h_errno == NO_RECOVERY)     return E_DNS_FAILED ;
       if (h_errno == NO_DATA || h_errno == NO_ADDRESS)
           return E_DNS_NODATA ;
       hzerr(E_DNS_FAILED, "Could not resolve hostname") ;
       return E_DNS_FAILED ;
   }
   if (m_nPort == 0)
   {
       hzerr(E_ARGUMENT, "Port not set") ;
       return E_ARGUMENT ;
   }
   m_SvrLen = sizeof(m_SvrAddr) ;
   /*
   **  ** Set up socket
   **      */
   memset(&m_SvrAddr, 0,sizeof(m_SvrAddr)) ;
   m_SvrAddr.sin_family = AF_INET ;
   memcpy(&m_SvrAddr.sin_addr, m_pHost->h_addr, m_pHost->h_length) ;
   m_SvrAddr.sin_port = htons(m_nPort) ;
   if ((m_nSock = socket(AF_INET, SOCK_DGRAM, 0))< 0)
   {
       hzerr(E_NOSOCKET, "Could not create client socket") ;
       return E_NOSOCKET ;
   }
   if (setsockopt(m_nSock, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) < 0)
   {
       hzerr(E_NOSOCKET, "Could not set send timeout on UDP client socket") ;
       return E_NOSOCKET ;
   }
   if (setsockopt(m_nSock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) < 0)
   {
       hzerr(E_NOSOCKET, "Could not set recv timeout on UDP client socket") ;
       return E_NOSOCKET ;
   }
   return E_OK ;
}