#ifdef _WIN32 # include # include # define MSG_NOSIGNAL 0 # define socklen_t _i32 #else # include # include # include # include # include # include # include # include # include # include # define SOCKET_ERROR -1 # define closesocket close # define SOCKET int # define Sleep(x) usleep(x*1000) #endif #if defined(__sun__) || defined(__APPLE__) # define MSG_NOSIGNAL 0 #endif #ifdef SOCK_CLOEXEC #define ACCEPT_CLOEXEC(sockfd, addr, addrlen) accept4(sockfd, addr, addrlen, SOCK_CLOEXEC) #else #ifdef _WIN32 #define ACCEPT_CLOEXEC(sockfd, addr, addrlen) accept(sockfd, addr, addrlen) #else #ifndef ACCEPT_CLOEXEC_DEFINED #define ACCEPT_CLOEXEC_DEFINED namespace { int ACCEPT_CLOEXEC(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { int rc = accept(sockfd, addr, addrlen); if(rc) fcntl(rc, F_SETFD, fcntl(rc, F_GETFD, 0) | FD_CLOEXEC); return rc; } } #endif //ACCEPT_CLOEXEC_DEFINED #endif //!_WIN32 #endif //!SOCK_CLOEXEC