Return Type | Function name | Arguments |
---|---|---|
hzEcode | hzUdpClient::Connect | (const hzString&,unsigned int,bool,) |
Declared in file: hzUdpClient.h
Defined in file : hzUdpClient.cpp
Function Logic:
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 ; }