Return TypeFunction nameArguments
hzEcodehzTcpClient::ConnectStd(const char*,unsigned int,unsigned int,unsigned int,)

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

Function Logic:

0:START 1:m_nSock 2:m_Hostname==hostname&&m_nPort==nPort 3:Return E_OK 4:hzString::Clear m_pHost hzTcpClient::Close 5:m_Hostname&&m_Hostname!=hostname 6:m_Hostname m_pHost 7:!m_Hostname 8:m_Hostname 9:!m_pHost 10:gethostbyname m_pHost 11:!m_pHost 12:h_errno==TRY_AGAIN 13:Return E_DNS_RETRY 14:h_errno==HOST_NOT_FOUND 15:Return E_DNS_NOHOST 16:h_errno==NO_RECOVERY 17:Return E_DNS_FAILED 18:h_errno==NO_DATA||h_errno==NO_ADDRESS 19:Return E_DNS_NODATA 20:hzString::Clear 21:Return hzerr(E_DNS_NOHOST,Unknown Host [%s]\n,hostname) 22:m_nPort memset m_SvrAddr memcpy htons m_SvrAddr 23:(m_nSock=socket(AF_INET,SOCK_STREAM,0))<0 24:Return hzerr(E_NOSOCKET,Could not create socket (errno=%d),errno) 25:connect(m_nSock,(SOCKADDR*)&m_SvrAddr,sizeof(m_SvrAddr))<0 26:Return hzerr(E_HOSTFAIL,Could not connect to host [%s] on port %d (errno=%d),*m_Hostname,m_nPort,errno) 27:hzTcpClient::SetRecvTimeout rc 28:rc==E_OK 29:hzTcpClient::SetSendTimeout rc 30:Return E_OK

Function body:

hzEcode hzTcpClient::ConnectStd (const char* hostname, unsigned int nPort, unsigned int nTimeoutR, unsigned int nTimeoutS)
{
   _hzfunc("hzTcpClient::ConnectStd") ;
   hzEcode rc = E_OK ;
   if (m_nSock)
   {
       if (m_Hostname == hostname && m_nPort == nPort)
           return E_OK ;
       m_Hostname.Clear() ;
       m_pHost = 0;
       Close() ;
   }
   if (m_Hostname && m_Hostname != hostname)
   {
       m_Hostname = hostname ;
       m_pHost = 0;
   }
   if (!m_Hostname)
       m_Hostname = hostname ;
   if (!m_pHost)
   {
       m_pHost = gethostbyname(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 ;
           m_Hostname.Clear() ;
           return hzerr(E_DNS_NOHOST, "Unknown Host [%s]\n", hostname) ;
       }
   }
   m_nPort = nPort ;
   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(nPort) ;
   if ((m_nSock = socket(AF_INET, SOCK_STREAM, 0))< 0)
       return hzerr(E_NOSOCKET, "Could not create socket (errno=%d)", errno) ;
   if (connect(m_nSock, (SOCKADDR*) &m_SvrAddr, sizeof(m_SvrAddr)) < 0)
       return hzerr(E_HOSTFAIL, "Could not connect to host [%s] on port %d (errno=%d)", *m_Hostname, m_nPort, errno) ;
   rc = SetRecvTimeout(nTimeoutR) ;
   if (rc == E_OK)
       rc = SetSendTimeout(nTimeoutR) ;
   return E_OK ;
}