Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if not ffi then ffi = require("ffi") end
- INVALID_SOCKET_ = -1
- SOL_SOCKET = 0xFFFF
- INADDR_NONE_ = 0xFFFFFFFF
- if jit.os == "Windows" then
- FIONREAD = 0x4004667F
- sock = ffi.load("ws2_32")
- elseif jit.os == "MacOS" then
- FIONREAD = 0x4004667F
- sock = ffi.load("sys/socket.h")
- elseif jit.os == "Linux" then
- FIONREAD = 0x0000541B
- sock = ffi.load("sys/socket.h")
- end
- ffi.cdef [[
- typedef uint16_t u_short;
- typedef uint32_t u_int;
- typedef unsigned long u_long;
- typedef uintptr_t SOCKET;
- typedef struct fd_set {u_int fd_count;SOCKET fd_array[64];} fd_set;
- u_long htonl(u_long hostlong);
- u_short ntohs(u_short netshort);
- u_long ntohl(u_long netlong);
- unsigned long inet_addr(const char* cp);
- char* inet_ntoa(struct in_addr in);
- SOCKET socket(int af, int type, int protocol);
- SOCKET accept(SOCKET s,struct sockaddr* addr,int* addrlen);
- int bind(SOCKET s, const struct sockaddr* name, int namelen);
- int closesocket(SOCKET s);
- int connect(SOCKET s, const struct sockaddr * name, int namelen);
- int getsockname(SOCKET s, struct sockaddr* name, int* namelen);
- int ioctlsocket(SOCKET s, long cmd, u_long* argp);
- int listen(SOCKET s, int backlog);
- int recv(SOCKET s, char* buf, int len, int flags);
- int recvfrom(SOCKET s, char* buf, int len, int flags, struct sockaddr* from, int* fromlen);
- int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, const struct timeval* timeout);
- int send(SOCKET s, const char* buf, int len, int flags);
- int sendto(SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen);
- int setsockopt(SOCKET s, int level, int optname, const char* optval, int optlen);
- int shutdown(SOCKET s, int how);
- struct hostent* gethostbyname(const char* name);
- ]]
- print(type(sock.sendto))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement