      .
================================================================================

SOCK [*] BName;[ProFamily][;ProType][;ProID]  //  
SOCK --file [*] CtrName;[we][-rwd];FileName  //      API
	w: 	 we:+  -: 
SOCK --shm [*] CtrName;[w];ShareName;Len[;Src;Off;InitV;InitN] //   w: 
SOCK --event [*] CtrName;ShareName[;initv;bManual]  // 
SOCK --sem[aphore] [*] CtrName;ShareName[;initv;maxv]  // 
SOCK --mutex [*] CtrName;ShareName[;InitLock(0)]  // Mutex
SOCK --mailslot [*] CtrName;ShareNam[;bServer;TimeoutMs]  //mailslot .read/write receve/send 
SOCK --pipe [*] CtrName;ShareNam[;TimeoutMs;BufSZ;Link]  //pipe .read/write  .connect
	Link: 0x1:Now  0x2:Client 0x4:Server 0:Auto(First Server)
SOCK --gethostbyname[*|#] IPName;HostName  //  IP-, 
	*    , #  

--exist	check(PIPE may 231)  
--only	only one     
*	 <BName>      /
BName	 ,       .
ProFamily   ,   : AF_INET=2
ProType	  : SOCK_STREAM=1 (),  :SOCK_DGRAM=2
ProID	TCP:IPPROTO_TCP=6(-) UDP:IPPROTO_UDP=17 IP:IPPROTO_IP=0
--------------------------------------------------------------------------------
"ENVI @Name.connect=[ErrVarName];IP;PortID",    .
  ErrVarName    (0  )
"ENVI @Name.write=[ErrVarName];[LenVarName];[DataVarName];[NumByteSent[@Offset]] [;SendMark][;IP][;PortID]"
  LenVarName     , 
   ,  DataVarkame -.  ,
  "IP PortID"      SOCK_STREAM.    
"ENVI @Name.read=[ErrVarName];[LenVarName];[DataVarName];[*] [NumByteReceived[@Offset]] [;SendMark][;IP][;PortID]"
  LenVarName     ,  
   ,   DataVarkame -. "*"  
     ,      
  "IPVarName PortIDVarName"   IP    ,  "#" 
  IPname       .
"ENVI @Name.close=[ErrVarName]"    .
  ErrVarName    (0  )
"ENVI @Name.sock=[ErrVarName][;ProFamily][;ProType][;ProID]"  
   sock
"ENVI @Name.shutdown=[ErrVarName][;Mode]"     
  -(2):  0:  1:
  [.sock]  [.close]   
"ENVI @Name.bind=[ErrVarName];IP;PortID"     
  IP  
"ENVI @Name.listen=[ErrVarName][ConnPoolSize]"  
    , 7 -.
"ENVI @Name.accept=[ErrVarName];[MonitorConnfd][;IPVarName][;PortVarName]" 
    
  "IPVarName PortIDVarName"   IP    ,  "#"  
  IPVarName       .
"ENVI @Name.fd=fdVarName"  fdVarName    
    ,   WindowsAPI.
"ENVI @Name.mem=mVName" mVName  SHM 
  ?ENVI-mkfixdummy &&V=%mVName%:  
"ENVI @Name.setsockopt=[ErrVName];[CfgLevel];CfgItem;CfgDatVName[;CfgDataLen]"
  CfgLevel  SOL_SOCKET(0xffff) -. CfgDataLen   
  -.  :
TEAM ENVI#$ &&v=1| ENVI @sv.setsockopt=;;%&SO_REUSEADDR%, &v //  
"ENVI @Name.ioctlsocket=[ErrVName];;ConfigItem;ConfigDataVarName"
"ENVI @Name.DeviceIoControl=[ErrVName];OP;IAddr|*PENm;InLen;OAddr|*PeNm;Olen;RNM[;lpov]
"ENVI @Name.select=[ErrVName];MSTimeout;[[ReadRetVarName:]readfd1:readfd2:...][;[WriteRetVarName:]writefd1:writefd2:...][;[AbnormalRetVarName:]abnormalfd1: abnormalfd2:..]?"
  "   .    ReadRetVarName    
  -  ,        .
  - MSTimeout "-1" - ,  "0" -   
"ENVI @Name.getname=[ErrVarName];[0/1];[IPVarName][;PortIDVarName]"  IP 
     (0 -) /   (1).  ,   .
"ENVI @Name.wait=[ErrVName][;ms][;[[*]handle2:handle3...]]"
   .def INFINITE  *:All
"ENVI @@wait=(Type)ShareName;[ErrVName][;ms][;[[*]handle2:handle3...]]"
"ENVI @Name.setevent=[ErrVName][;1][;NmOldV]"
  set/free it (/). 0   
"ENVI @@setevent=(Type)ShareName;[ErrVName][;1][;NmOldV]" Type:event/mutex/sem[aphore]

******************************************************************[]*****
SOCK s1
SOCK s2;;%&SOCK_DGRAM%;%&IPPROTO_UDP%