#module "socket" /* struct hostent { char FAR * h_name; char FAR * FAR * h_aliases; short h_addrtype; short h_length; char FAR * FAR * h_addr_list; }; struct sockaddr { u_short sa_family; // address family char sa_data[14]; // up to 14 bytes of direct address }; */ #define global PF_INET 2 #define global SOCK_STREAM 1 /* stream socket */ #define global SOCK_DGRAM 2 /* datagram socket */ #define global SOCK_RAW 3 /* raw-protocol interface */ #define global SOCK_RDM 4 /* reliably-delivered message */ #define global SOCK_SEQPACKET 5 /* sequenced packet stream */ #deffunc WSAStartup int,int mref _p1,0 mref _p2,1 ll_libload hWinSock2,"wsock32.dll" ll_getproc pWSAStartup,"WSAStartup",hWinSock2 ll_getproc pWSACleanup,"WSACleanup",hWinSock2 ll_getproc pWSAGetLastError,"WSAGetLastError",hWinSock2 ll_getproc p_gethostbyname,"gethostbyname",hWinSock2 ll_getproc p_gethostname,"gethostname",hWinSock2 ll_getproc p_inet_ntoa,"inet_ntoa",hWinSock2 ll_getproc p_socket,"socket",hWinSock2 ll_getproc p_closesocket,"closesocket",hWinSock2 ll_getproc p_connect,"connect",hWinSock2 ll_getproc p_recv,"recv",hWinSock2 ll_getproc p_send,"send",hWinSock2 ll_getproc p_select,"select",hWinSock2 mref retstr,65 ll_getptr retstr ll_ret _pretstr mref _stat,64 sdim s,1024 ll_getptr s ll_ret _ptr_s _prm=_p1,_ptr_s ll_callfunc _prm,2,pWSAStartup ll_ret _stat return #deffunc WSACleanup ll_callfnv pWSACleanup ll_libfree hWinSock2 _stat=0 return #deffunc ws_gethostname val,int mref _p1,24 mref _p2,1 if _p2==0 :_p2=256 ll_getptr _p1 ll_ret _p _prm=_p,_p2 ll_callfunc _prm,2,p_gethostname ll_ret _stat return #deffunc ws_gethostbyname val,str,int mref _p0,16 mref _p1,33 mref _p2,2 ll_getptr _p1 ll_ret _p _prm=_p ll_callfunc _prm,1,p_gethostbyname ll_ret p ll_peek4 i,p+12 ll_peek4 _p0,i+(_p2*4) ll_peek4 _p0,_p0 _stat=_p0 return #deffunc ws_inet_ntoa val,int mref _p0,24 mref _p1,1 ll_callfunc _p1,1,p_inet_ntoa ll_ret i ll_peek _p0,i return ;SOCKET PASCAL FAR socket (int af, int type, int protocol); #deffunc ws_socket val,int,int,int mref _p0,16 mref _p1,1 mref _p2,2 mref _p3,3 _prm=_p1,_p2,_p3 ll_callfunc _prm,3,p_socket ll_ret _p0 _stat=_p0<0 return ;int PASCAL FAR closesocket (SOCKET s); #deffunc ws_closesocket int mref _p1,0 ll_callfunc _p1,1,p_closesocket ll_ret i _stat=i return ;int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR *name, int namelen); #deffunc ws_connect int,val,int mref _p1,0 mref _p2,17 mref _p3,1 ll_getptr _p2 ll_ret _p _prm=_p1,_p,_p3 ll_callfunc _prm,3,p_connect ll_ret i _stat=i return ;int PASCAL FAR recv (SOCKET s, char FAR * buf, int len, int flags); #deffunc ws_recv int,val,int,int,int mref _p1,0 mref _p2,1025 mref _p3,2 mref _p4,3 mref _p5,4 _prm=_p1,_p2.7+_p5,_p3,_p4 ll_callfunc _prm,4,p_recv ll_ret i _stat=i return ;int PASCAL FAR send (SOCKET s, const char FAR * buf, int len, int flags); #deffunc ws_send int,val,int,int,int mref _p1,0 mref _p2,1025 mref _p3,2 mref _p4,3 mref _p5,4 _prm=_p1,_p2.7+_p5,_p3,_p4 ll_callfunc _prm,4,p_send ll_ret i _stat=i return ;int PASCAL FAR select (int nfds, fd_set FAR *readfds, fd_set FAR *writefds, ; fd_set FAR *exceptfds, const struct timeval FAR *timeout); #deffunc ws_select int,val,int,int,int,int mref _p1,0 mref _p2,1025 mref _p3,2 mref _p4,3 mref _p5,4 mref _p6,5 _p5.1=_p6 ll_getptr _p5 ll_ret _p _prm=_p1,_p2.7,_p3,_p4,_p ll_callfunc _prm,5,p_select ll_ret i _stat=i return #global