/** * @file nstdc_socket.h * @brief ソケットを扱うモジュール * @author Nomura Kei * @copyright 2003 - 2017 Nomura Kei * License: New BSD License (3-cclause BSD license) */ #ifndef NSTDC_SOCKET_H #define NSTDC_SOCKET_H #include <stddef.h> #include <stdbool.h> #include <nstdc.h> #include <nstdc_os.h> #if (nstdc_is_windows()) #include <ws2tcpip.h> #ifdef _MSV_VER #pragma comment(lib, "ws2_32.lib") #endif #define SHUT_RD SD_RECEIVE #define SHUT_WR SD_SEND #define SHUT_RDWR SD_BOTH #else #include <sys/time.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <netdb.h> #include <unistd.h> #endif #ifdef __cplusplus extern "C" { #endif #if (nstdc_is_windows()) #define socket( domain, type, protocol) \ socket_win( domain, type, protocol) #define accept( sockfd, addr, addrlen) \ accept( (SOCKET) sockfd, addr, addrlen) #define bind( sockfd, addr, addrlen) \ bind( (SOCKET) sockfd, addr, addrlen) #define connect( sockfd, addr, addrlen) \ connect( (SOCKET) sockfd, addr, addrlen) #define listen( sockfd, backlog) \ listen( (SOCKET) sockfd, backlog) #define shutdown( sockfd, how) \ shutdown( (SOCKET) sockfd, how) #define close( sockfd) \ closesocket((SOCKET) sockfd) #define recv( sockfd, buf, len, flags) \ recv( (SOCKET) sockfd, buf, len, flags) #define recvfrom( sockfd, buf, len, flags, src_addr, addrlen) \ recvfrom ( (SOCKET) sockfd, buf, len, flags, src_addr, addrlen) #define send( sockfd, buf, len, flags) \ send( (SOCKET) sockfd, buf, len, flags) #define sendto( sockfd, buf, len, flags, dest_addr, addrlen) \ sendto( (SOCKET) sockfd, buf, len, flags, dest_addr, addrlen) #endif /* if (nstdc_is_windows()) */ #ifdef __cplusplus } #endif #endif /* NSTDC_SOCKET_H */