123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- #ifndef __SOCKUTILS_H__
- #define __SOCKUTILS_H__
- #ifdef _MSC_VER
- #pragma once
- #endif
- #ifdef _WIN32
-
- #ifdef __MINGW32__
- #include <windef.h>
- #endif
- #include <winsock2.h>
- #include <ws2tcpip.h>
-
- typedef int socklen_t;
- #else
-
- #include <stdio.h>
- #include <string.h> /* for memset() */
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h> /* DNS lookup */
- #include <unistd.h> /* close() */
- #include <errno.h> /* errno() */
- #include <netinet/in.h> /* for sockaddr_in, in BSD at least */
- #include <arpa/inet.h>
- #include <net/if.h>
-
- #ifndef SOCKET
- #define SOCKET int
- #endif
-
- #ifndef INVALID_SOCKET
- #define INVALID_SOCKET -1
- #endif
-
- #define closesocket(a) close(a)
- #endif
- #if ((defined(__MINGW32__)) && (_WIN32_WINNT < 0x0501))
- int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
- char*,DWORD,int);
- #endif
- #ifdef NDEBUG
- #define SOCK_DEBUG_MESSAGE(msg) ((void)0)
- #else
- #if (defined(_WIN32) && defined(_MSC_VER))
- #include <crtdbg.h> /* for _CrtDbgReport */
-
-
- #define SOCK_DEBUG_MESSAGE(msg) { _CrtDbgReport(_CRT_WARN, NULL, 0, NULL, "%s\n", msg); fprintf(stderr, "%s\n", msg); }
- #else
- #define SOCK_DEBUG_MESSAGE(msg) { fprintf(stderr, "%s\n", msg); }
- #endif
- #endif
- #define SOCKBUF_CHECKONLY 1
- #define SOCKBUF_BUFFERIZE 0
- #define SOCKOPEN_CLIENT 0
- #define SOCKOPEN_SERVER 1
- #define SOCK_RECEIVEALL_NO 0x00000000
- #define SOCK_RECEIVEALL_YES 0x00000001
- #define SOCK_EOF_ISNT_ERROR 0x00000000
- #define SOCK_EOF_IS_ERROR 0x00000002
- #ifdef __cplusplus
- extern "C" {
- #endif
- int sock_init(char *errbuf, int errbuflen);
- void sock_cleanup(void);
- void sock_fmterror(const char *caller, int errcode, char *errbuf, int errbuflen);
- void sock_geterror(const char *caller, char *errbuf, int errbufsize);
- int sock_initaddress(const char *address, const char *port,
- struct addrinfo *hints, struct addrinfo **addrinfo,
- char *errbuf, int errbuflen);
- int sock_recv(SOCKET sock, void *buffer, size_t size, int receiveall,
- char *errbuf, int errbuflen);
- int sock_recv_dgram(SOCKET sock, void *buffer, size_t size,
- char *errbuf, int errbuflen);
- SOCKET sock_open(struct addrinfo *addrinfo, int server, int nconn, char *errbuf, int errbuflen);
- int sock_close(SOCKET sock, char *errbuf, int errbuflen);
- int sock_send(SOCKET sock, const char *buffer, size_t size,
- char *errbuf, int errbuflen);
- int sock_bufferize(const char *buffer, int size, char *tempbuf, int *offset, int totsize, int checkonly, char *errbuf, int errbuflen);
- int sock_discard(SOCKET sock, int size, char *errbuf, int errbuflen);
- int sock_check_hostlist(char *hostlist, const char *sep, struct sockaddr_storage *from, char *errbuf, int errbuflen);
- int sock_cmpaddr(struct sockaddr_storage *first, struct sockaddr_storage *second);
- int sock_getmyinfo(SOCKET sock, char *address, int addrlen, char *port, int portlen, int flags, char *errbuf, int errbuflen);
- int sock_getascii_addrport(const struct sockaddr_storage *sockaddr, char *address, int addrlen, char *port, int portlen, int flags, char *errbuf, int errbuflen);
- int sock_present2network(const char *address, struct sockaddr_storage *sockaddr, int addr_family, char *errbuf, int errbuflen);
- #ifdef __cplusplus
- }
- #endif
- #endif
|