7# define WIN32_LEAN_AND_MEAN
15# include <sys/socket.h>
16# include <sys/select.h>
20#pragma comment(lib, "WS2_32.lib")
33# define SIG_SAFE_CALL(expr) return expr
35# define SOCKBUF_T char *
37# define SIG_SAFE_CALL(expr) \
41 if ( rc != -1 || errno != EINTR ) \
45# define SOCKLEN_T socklen_t
46# define SOCKBUF_T void *
50inline ssize_t qsendto(
int socket,
const SOCKBUF_T buf,
size_t size,
int flags,
const struct sockaddr *dest_addr, SOCKLEN_T addrlen)
52 SIG_SAFE_CALL(
::sendto(socket, buf,
size, flags, dest_addr, addrlen));
56inline ssize_t qrecvfrom(
int socket, SOCKBUF_T buf,
size_t size,
int flags,
struct sockaddr *src_addr, SOCKLEN_T *addrlen)
58 SIG_SAFE_CALL(
::recvfrom(socket, buf,
size, flags, src_addr, addrlen));
65 return qsendto(socket, (SOCKBUF_T)buf,
size, 0,
nullptr, 0);
75 return qrecvfrom(socket, (SOCKBUF_T)buf,
size, 0,
nullptr,
nullptr);
82inline int qselect(
int nflds, fd_set *rds, fd_set *wds, fd_set *eds,
struct timeval *timeout)
84 SIG_SAFE_CALL(
::select(nflds, rds, wds, eds, timeout));
91 return WSAPoll(fds, nfds, timeout_ms);
93 SIG_SAFE_CALL(::poll(fds, nfds, timeout_ms));
102 inline ssize_t sendto(
int,
const SOCKBUF_T,
size_t,
int,
const struct sockaddr *, SOCKLEN_T) {
return 0; }
103 inline ssize_t recvfrom(
int, SOCKBUF_T,
size_t,
int,
struct sockaddr *, SOCKLEN_T *) {
return 0; }
104 inline ssize_t send(
int,
const SOCKBUF_T,
size_t,
int) {
return 0; }
106 inline int select(
int, fd_set *, fd_set *, fd_set *,
struct timeval *) {
return 0; }
asize_t size
Definition kernwin.hpp:6339
ssize_t recv(int, SOCKBUF_T, size_t, int)
Definition pronet.h:105
ssize_t send(int, const SOCKBUF_T, size_t, int)
Definition pronet.h:104
ssize_t sendto(int, const SOCKBUF_T, size_t, int, const struct sockaddr *, SOCKLEN_T)
Definition pronet.h:102
int select(int, fd_set *, fd_set *, fd_set *, struct timeval *)
Definition pronet.h:106
ssize_t recvfrom(int, SOCKBUF_T, size_t, int, struct sockaddr *, SOCKLEN_T *)
Definition pronet.h:103
unsigned int uint32
unsigned 32 bit value
Definition pro.h:348
ptrdiff_t ssize_t
Signed size_t - used to check for size overflows when the counter becomes negative.
Definition pro.h:381
unsigned short ushort
unsigned 16 bit value
Definition pro.h:338
_qstring< char > qstring
regular string
Definition pro.h:3694
ssize_t qsendto(int socket, const SOCKBUF_T buf, size_t size, int flags, const struct sockaddr *dest_addr, SOCKLEN_T addrlen)
Definition pronet.h:50
ssize_t qsend(int socket, const void *buf, size_t size)
Definition pronet.h:62
idaman bool ida_export qgethostname(qstring *out)
idaman bool ida_export qhost2addr_(void *out, const char *name, ushort family, ushort port=0)
Get the IPv4 or IPv6 address corresponding to the given host.
ssize_t qrecv(int socket, void *buf, size_t size)
Definition pronet.h:72
ssize_t qrecvfrom(int socket, SOCKBUF_T buf, size_t size, int flags, struct sockaddr *src_addr, SOCKLEN_T *addrlen)
Definition pronet.h:56
int qpoll(pollfd *fds, uint32 nfds, int timeout_ms)
Definition pronet.h:88
int qselect(int nflds, fd_set *rds, fd_set *wds, fd_set *eds, struct timeval *timeout)
Definition pronet.h:82
bool get_my_ip(char out[NI_MAXHOST], const ushort family=AF_INET)
bool qhost2addr(struct sockaddr_in *out, const char *name, ushort port=0)
Definition pronet.h:126