Return Type | Function name | Arguments |
---|---|---|
hzEcode | hzTcpClient::ConnectStd | (const char*,unsigned int,unsigned int,unsigned int,) |
Declared in file: hzTcpClient.h
Defined in file : hzTcpClient.cpp
Function Logic:
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 ; }