#include "winsock.as" #module "hspsock_" #deffunc sockinit dim sock,32 WSAStartup 0x0202 return //#func sockbye sockbye $100 #deffunc sockbye onexit WSACleanup return //#func sockopen sockopen 4 #deffunc sockopen int,str,int mref _p1,0 mref _p2,33 mref _p3,2 ws_socket sock._p1,PF_INET,SOCK_STREAM ws_gethostbyname addr,_p2 ;アドレスデータ作成? ;dim addrdat,16 wpoke addrdat,0,PF_INET poke addrdat,2,_p3>>8 poke addrdat,3,_p3 wpoke addrdat,4,addr wpoke addrdat,6,addr>>16 ;接続 ws_connect sock._p1,addrdat,16 if stat :mes "connect err!" return //#func sockclose sockclose 0 #deffunc sockclose int mref _p1,0 ws_closesocket sock._p1 return //#func sockget sockget 1 #deffunc sockget val,int,int mref _p1,24 mref _p2,1 mref _p3,2 ws_recv sock._p3,_p1,_p2 return //#func sockgetc sockgetc 1 #deffunc sockgetc val,int mref _p1,24 mref _p3,1 ws_recv sock._p3,_p1,1 return //#func sockgetb sockgetb 1 #deffunc sockgetb val,int,int,int ;mref _p1,24 mref _p2,1 mref _p3,2 mref _p4,3 mref PVAL,1024 if PVAL.0&0xffff==2 { ;str mref _p1,24 }else{ mref _p1,16 } ws_recv sock._p4,_p1,_p3,0,_p2 return //#func sockput sockput 6 #deffunc sockput str,int mref _p1,32 mref _p2,1 strlen l,_p1 ws_send sock._p2,_p1,l return //#func sockputc sockputc 2 #deffunc sockputc val,int mref _p1,24 mref _p3,1 ws_send sock._p3,_p1,1 return //#func sockputb sockputb 1 #deffunc sockputb val,int,int,int ;mref _p1,24 mref _p2,1 mref _p3,2 mref _p4,3 mref PVAL,1024 if PVAL.0&0xffff==2 { ;str mref _p1,24 }else{ mref _p1,16 } ws_send sock._p4,_p1,_p3,0,_p2 return //#func sockcheck sockcheck 0 #deffunc sockcheck int mref _p1,0 fdset.0=1 fdset.1=sock._p1 ws_select 1,fdset,0,0, 0,10000 return //#func sockmake sockmake $10 #deffunc sockmake_ int,int mref _p1,0 mref _p2,1 ws_socket sock._p1,PF_INET,SOCK_STREAM ;アドレスデータ作成? ;dim addrdat,16 wpoke addrdat,0,PF_INET poke addrdat,2,_p2>>8 poke addrdat,3,_p2 wpoke addrdat,4,addr wpoke addrdat,6,addr>>16 ;接続 //ws_bind sock._p1,addrdat,16 //WSAAsyncSelect sock._p1, _ ,WM_ASYNC, FD_ACCEPT //ws_listen sock._p1,5 return //#func sockwait sockwait $10 #deffunc sockwait_ int mref _p1,0 return //#func ipget ipget $10 #deffunc ipget mref _refstr,65 ws_gethostname myhost,1024 if stat :return ws_gethostbyname addr,myhost ws_inet_ntoa _refstr,addr return #global sockinit