Return Type | Function name | Arguments |
---|---|---|
hzEcode | hzIpListen::Activate | (void) |
Declared in file: hzIpServer.h
Defined in file : hzIpServer.cpp
Function Logic:
Function body:
hzEcode hzIpListen::Activate (void) { _hzfunc("hzIpListen::Activate") ; uint32_t nTries ; int32_t sys_rc ; if (m_bOpflags & HZ_LISTEN_UDP) { if ((m_nSocket = socket(AF_INET, SOCK_DGRAM, 0))< 0) { hzerr(E_NOSOCKET, "Could not create UDP server socket (errno=%d)", errno) ; return E_NOSOCKET ; } } else { if ((m_nSocket = socket(AF_INET, SOCK_STREAM, 0))< 0) { hzerr(E_NOSOCKET, "Could not create TCP server socket (errno=%d)", errno) ; return E_NOSOCKET ; } } memset(&m_Address, 0,sizeof(SOCKADDRIN)) ; m_Address.sin_family = AF_INET ; m_Address.sin_addr.s_addr = htonl(INADDR_ANY) ; m_Address.sin_port = htons(m_nPort) ; for (nTries = 1; nTries <&eq; 5; nTries++) { sys_rc = bind(m_nSocket, (SOCKADDR*) &m_Address, sizeof(m_Address)) ; if (sys_rc < 0) { hzwarn(E_NOSOCKET, "Server could not bind to port %d (attempt %d)", m_nPort, nTries) ; if (close(m_nSocket) < 0) { hzerr(E_CORRUPT, "Could not close socket %d (port %d) after bind_fail. Errno=%d", m_nSocket, m_nPort, errno) ; return E_CORRUPT ; } if (nTries == 5) return E_NOSOCKET ; sleep(5); continue ; } break ; } if (!(m_bOpflags & HZ_LISTEN_UDP)) { if (listen(m_nSocket, 5)< 0) { hzwarn(E_NOSOCKET, "Server listening socket (sock %d) is not listening on port %d. Errno=%d", m_nSocket, m_nPort, errno) ; if (close(m_nSocket) < 0) hzwarn(E_CORRUPT, "Could not close socket %d after listen_fail. Errno=%d", m_nSocket, errno) ; return E_NOSOCKET ; } } return E_OK ; }