Purpose: Establish a UNIX domain TCP connection to a server

Return TypeFunction nameArguments
hzEcodehzTcpClient::ConnectLoc(uint32_t,)

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

Function Logic:

0:START 1:unknown 2:unknown 3:Return E_OK 4:items 5:m_Hostname m_nPort 6:unknown 7:items 8:Return E_HOSTFAIL 9:items m_SvrAddr items m_SvrAddr 10:unknown 11:Return hzerr(E_NOSOCKET,Could not create socket (returns %d, errno %d),m_nSock,errno) 12:unknown 13:Return hzerr(E_HOSTFAIL,Could not connect to host (errno=%d),errno) 14:unknown 15:Return hzerr(E_HOSTFAIL,Unspecified error. Socket is %d\n,m_nSock) 16:Return E_OK

Function body:

hzEcode hzTcpClient::ConnectLoc (uint32_t nPort)
{
   //  Purpose: Establish a UNIX domain TCP connection to a server
   //  
   //  Arguments: 1) nPort The port number
   //  
   //  Returns: E_NOSOCKET If the socket could not be created
   //     E_HOSTFAIL If not connection can be established
   //     E_OK  If operation successfull
   _hzfunc("hzTcpClient::ConnectLoc") ;
   //  Check we are not already connected
   if (m_nSock)
   {
       if (m_nPort == nPort)
           return E_OK ;
       Close() ;
   }
   m_Hostname = "127.0.0.1" ;
   m_nPort = nPort ;
   //  Get the hostname
   if (!(m_pHost = gethostbyname(*m_Hostname)))
   {
       threadLog("Unknown Host [%s]\n", *m_Hostname) ;
       return E_HOSTFAIL ;
   }
   //  Create the socket
   memset(&m_SvrAddr, 0,sizeof(m_SvrAddr)) ;
   m_SvrAddr.sin_family = AF_UNIX ;
   memcpy(&m_SvrAddr.sin_addr, m_pHost->h_addr, m_pHost->h_length) ;
   m_SvrAddr.sin_port = htons(nPort) ;
   if ((m_nSock = socket(AF_UNIX, SOCK_STREAM, 0))< 0)
       return hzerr(E_NOSOCKET, "Could not create socket (returns %d, errno %d)", m_nSock, errno) ;
   //  Connect stage
   if (connect(m_nSock, (struct sockaddr *) &m_SvrAddr, sizeof(m_SvrAddr)) < 0)
       return hzerr(E_HOSTFAIL, "Could not connect to host (errno=%d)", errno) ;
   if (m_nSock <&eq; 0)
       return hzerr(E_HOSTFAIL, "Unspecified error. Socket is %d\n", m_nSock) ;
   return E_OK ;
}