Purpose: Establish a UNIX domain TCP connection to a server
| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hzTcpClient::ConnectLoc | (uint32_t,) |
Declared in file: hzTcpClient.h
Defined in file : hzTcpClient.cpp
Function Logic:
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 ;
}