Public Event ConnectionRequest(ByVal RequestID As Long)
Public Event DataArrival(ByVal BytesTotal As Long)
Public Event Error(ByVal Number As Integer, Description As String, ByVal sCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Public Event SendComplete()
Public Event SendProgress(ByVal BytesSent As Long, ByVal BytesRemaining As Long)
Public Event StatusChange(ByVal Status As StateConstants)
Public Event TextArrival(Text As String, ByVal LineChange As UniSockLineChange, ByVal ANSI As Boolean)
' for compatibility...
Public Enum ErrorConstants
sckAddressInUse = 10048
sckAddressNotAvailable = 10049
sckAlreadyComplete = 10037
sckAlreadyConnected = 10056
sckBadState = 40006
sckConnectAborted = 10053
sckConnectionRefused = 10061
sckConnectionReset = 10054
sckGetNotSupported = 394
sckHostNotFound = 11001
sckHostNotFoundTryAgain = 11002
sckInProgress = 10036
sckInvalidArg = 40014
sckInvalidArgument = 10014
sckInvalidOp = 40020
sckInvalidPropertyValue = 380
sckMsgTooBig = 10040
sckNetReset = 10052
sckNetworkSubsystemFailed = 10050
sckNetworkUnreachable = 10051
sckNoBufferSpace = 10055
sckNoData = 11004
sckNonRecoverableError = 11003
sckNotConnected = 10057
sckNotInitialized = 10093
sckNotSocket = 10038
sckOpCanceled = 10004
sckOutOfMemory = 7
sckOutOfRange = 40021
sckPortNotSupported = 10043
sckSetNotSupported = 383
sckSocketShutdown = 10058
sckSuccess = 40017
sckTimedout = 10060
sckUnsupported = 40018
sckWouldBlock = 10035
sckWrongProtocol = 40026
End Enum
' for compatibility...
Public Enum ProtocolConstants
sckTCPProtocol
sckUDPProtocol
End Enum
' for compatibility...
Public Enum StateConstants
sckClosed
sckOpen
sckListening
sckConnectionPending
sckResolvingHost
sckHostResolved
sckConnecting
sckConnected
sckClosing
sckError
End Enum
Public Enum UniSockLineChange
[Socket Null]
[Socket CRLF]
[Socket LF]
[Socket CR]
End Enum
Public Enum UniSockMode
[Socket Binary Mode]
[Socket Text Mode]
End Enum
Public Enum UniSockTextFormat
[Socket UTF-8]
[Socket ANSI]
[Socket UTF-16]
End Enum
Private Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLength As Integer
hAddrList As Long
End Type
Private Type SOCKADDR_IN
Family As Integer
Port As Integer
Addr As Long
Zero(7) As Byte
End Type
Private Type WNDCLASS
Style As Long
lpfnWndProc As Long
cbClsextra As Long
cbWndExtra2 As Long
hInstance As Long
hIcon As Long
hCursor As Long
hbrBackground As Long
lpszMenuName As Long
lpszClassName As Long
End Type
Private Type WSAData
wVersion As Integer
wHighVersion As Integer
szDescription(256) As Byte
szSystemStatus(128) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
Private Declare Function CreateWindowExW Lib "user32" (ByVal dwExStyle As Long, ByVal lpClassName As Long, ByVal lpWindowName As Long, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function DefWindowProcW Lib "user32" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function FindWindowW Lib "user32" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function FormatMessageW Lib "kernel32" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As Long, ByVal nSize As Long, Arguments As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function PostMessageW Lib "user32" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function RegisterClassW Lib "user32" (Class As WNDCLASS) As Long
Private Declare Function SetWindowLongW Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function UnregisterClassW Lib "user32" (ByVal lpClassName As Long, ByVal hInstance As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" (ByVal lpString As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Sub PutMem4 Lib "msvbvm60" (Destination As Any, Value As Any)
Private Declare Sub PutMem8 Lib "msvbvm60" (Destination As Any, Value As Any)
Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function SysAllocStringANSI Lib "oleaut32" Alias "SysAllocStringByteLen" (ByVal OleStr As Long, ByVal bLen As Long) As String
Private Declare Function SysAllocStringByteLen Lib "oleaut32" (ByVal OleStr As Long, ByVal bLen As Long) As Long
Private Declare Function SysAllocStringLen Lib "oleaut32" (ByVal OleStr As Long, ByVal bLen As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, lpUsedDefaultChar As Long) As Long
Private Declare Function SocketAccept Lib "ws2_32" Alias "accept" (ByVal S As Long, ByRef Addr As SOCKADDR_IN, ByRef AddrLen As Long) As Long
Private Declare Function SocketBind Lib "ws2_32" Alias "bind" (ByVal S As Long, ByRef Name As SOCKADDR_IN, ByRef NameLen As Long) As Long
Private Declare Function SocketClose Lib "ws2_32" Alias "closesocket" (ByVal S As Long) As Long
Private Declare Function SocketConnect Lib "ws2_32" Alias "connect" (ByVal S As Long, ByRef Name As SOCKADDR_IN, ByVal NameLen As Long) As Long
Private Declare Function SocketGetHostName Lib "ws2_32" Alias "gethostname" (ByVal Hostname As String, ByVal NameLen As Long) As Long
Private Declare Function SocketGetHostByName Lib "ws2_32" Alias "gethostbyname" (ByVal Hostname As String) As Long
Private Declare Function SocketGetIP Lib "ws2_32" Alias "inet_addr" (ByVal CP As String) As Long
Private Declare Function SocketGetName Lib "ws2_32" Alias "getsockname" (ByVal S As Long, ByRef Name As SOCKADDR_IN, ByRef NameLen As Long) As Long
Private Declare Function SocketGetNameInfo Lib "ws2_32" Alias "getnameinfo" (ByRef SA As SOCKADDR_IN, ByVal SALen As Long, ByVal Host As String, ByVal HostLen As Long, ByVal Serv As String, ByVal ServLen As Long, ByVal Flags As Long) As Long
Private Declare Function SocketGetOptions Lib "ws2_32" Alias "getsockopt" (ByVal S As Long, ByVal Level As Long, ByVal OptName As Long, OptVal As Any, OptLen As Long) As Long
Private Declare Function SocketGetPeerName Lib "ws2_32" Alias "getpeername" (ByVal S As Long, ByRef Name As SOCKADDR_IN, ByRef NameLen As Long) As Long
Private Declare Function SockethTons Lib "ws2_32" Alias "htons" (ByVal hostshort As Integer) As Integer
Private Declare Function SocketInet_nToa Lib "ws2_32" Alias "inet_ntoa" (ByVal in_addr As Long) As Long
Private Declare Function SocketInit Lib "ws2_32" Alias "socket" (ByVal af As Long, ByVal s_type As Long, ByVal Protocol As Long) As Long
Private Declare Function SocketIOCtl Lib "ws2_32" Alias "ioctlsocket" (ByVal S As Long, ByVal Cmd As Long, ByRef ArgP As Long) As Long
Private Declare Function SocketListen Lib "ws2_32" Alias "listen" (ByVal S As Long, ByVal BackLog As Long) As Long
Private Declare Function SocketnTons Lib "ws2_32" Alias "htons" (ByVal netshort As Integer) As Integer
Private Declare Function SocketReceive Lib "ws2_32" Alias "recv" (ByVal S As Long, Buf As Any, ByVal BufLen As Long, ByVal Flags As Long) As Long
Private Declare Function SocketReceiveFrom Lib "ws2_32" Alias "recv" (ByVal S As Long, Buf As Any, ByVal BufLen As Long, ByVal Flags As Long, ByRef FromAddr As SOCKADDR_IN, ByVal FromLen As Long) As Long
Private Declare Function SocketSend Lib "ws2_32" Alias "send" (ByVal S As Long, Buf As Any, ByVal BufLen As Long, ByVal Flags As Long) As Long
Private Declare Function SocketSendTo Lib "ws2_32" Alias "sendto" (ByVal S As Long, Buf As Any, ByVal BufLen As Long, ByVal Flags As Long, ByRef ToAddr As SOCKADDR_IN, ByVal ToLen As Long) As Long
Private Declare Function SocketSetOptions Lib "ws2_32" Alias "setsockopt" (ByVal S As Long, ByVal Level As Long, ByVal OptName As Long, OptVal As Any, ByVal OptLen As Long) As Long
Private Declare Function WSAAsyncGetHostByName Lib "ws2_32" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal strHostName As String, Buf As Any, ByVal BufLen As Long) As Long
Private Declare Function WSAAsyncSelect Lib "ws2_32" (ByVal S As Long, ByVal hWnd As Long, ByVal wMsg As Long, ByVal lEvent As Long) As Long
Private Declare Function WSACancelAsyncRequest Lib "ws2_32" (ByVal hAsyncTaskHandle As Long) As Long
Private Declare Function WSACleanup Lib "ws2_32" () As Long
Private Declare Function WSAGetLastError Lib "ws2_32" () As Long
Private Declare Function WSAStartup Lib "ws2_32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
Private Const AF_INET = &H2&
Private Const FD_READ = &H1&
Private Const FD_WRITE = &H2&
Private Const FD_ACCEPT = &H8&
Private Const FD_CONNECT = &H10&
Private Const FD_CLOSE = &H20&
Private Const FIONREAD = &H4004667F
Private Const INADDR_NONE = -1&
Private Const INVALID_SOCKET = -1&
Private Const IPPROTO_TCP = 6&
Private Const IPPROTO_UDP = 17&
Private Const MSG_PEEK = &H2&
Private Const SO_BROADCAST = &H20&
Private Const SO_MAX_MSG_SIZE = &H2003&
Private Const SO_RCVBUF = &H1002&
Private Const SO_SNDBUF = &H1001&
Private Const SOCK_DGRAM = 2&
Private Const SOCK_STREAM = 1&
Private Const SOCKET_ERR = -1&
Private Const SOL_SOCKET = &HFFFF&
Private Const SOMAXCONN = 5&
Private Const WM_USER = &H400
Private Const RESOLVE_MESSAGE = WM_USER + &H400
Private Const SOCKET_MESSAGE = WM_USER + &H401
Private m_AsyncHost As Long
Private m_Buffer As String
Private m_BufferSize As Long
Private m_Class As WNDCLASS
Private m_ClassName As String
Private m_HostentHandle As Long
Private m_HostentPointer As Long
Private m_hWnd As Long
Private m_Initialized As Boolean
Private m_LineChange As String
Private m_LocalIP As String
Private m_LocalPort As Long
Private m_LocalPortBind As Long
Private m_Mode As UniSockMode
Private m_Peek As Boolean
Private m_Protocol As ProtocolConstants
Private m_ReceiveSize As Long
Private m_RegisterClass As Long
Private m_RemoteHost As String
Private m_RemoteIP As Long
Private m_RemotePort As Long
Private m_Request As Collection
Private m_RequestBuffer As String
Private m_RequestID As Long
Private m_RequestSA As SOCKADDR_IN
Private m_SendBuffer As String
Private m_SendBufferSize As Long
Private m_SendSize As Long
Private m_Socket As Long
Private m_State As StateConstants
Private m_WSAData As WSAData
Private CRLF As String
Private CR As String
Private LF As String
Private NULLCHAR As String
' the following are the requirements for SelfCallback
Private Declare Sub GetMem1 Lib "msvbvm60" (ByVal Addr As Long, RetVal As Byte)
Private Declare Sub GetMem4 Lib "msvbvm60" (ByVal Addr As Long, RetVal As Long)
Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function IsBadCodePtr Lib "kernel32" (ByVal lpfn As Long) As Long
Private Declare Sub PutMem2 Lib "msvbvm60" (ByVal Addr As Long, ByVal NewVal As Integer)
Private Declare Sub RtlMachineCodeCopy Lib "kernel32" Alias "RtlMoveMemory" (Destination As Long, Source As MachineCode, ByVal Length As Long)
Private Declare Function VirtualAlloc Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function VirtualFree Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
' self-documentation: less comments and constants
Private Type MachineCode ' 37 * 4 = 148 bytes
' thunk
OwnerPtr As Long ' 0
CallbackAddress As Long ' 1
API_EbMode As Long ' 2
API_IsBadCodePtr As Long ' 3
API_KillTimer As Long ' 4
' code
MC1(5 To 5) As Long ' 5
AllocatedDataPtr As Long ' 6
MC2(7 To 17) As Long ' 7 - 17
ParamCount As Long ' 18
MC3(19 To 35) As Long ' 19 - 35
Ordinal As Long ' 36
End Type
Public Function Accept(ByVal RequestID As Long) As Boolean
Dim clsSocket As UniSock, clsTemp As UniSock, lngBuffer As Long, udtSockAddr As SOCKADDR_IN
' validate
If (m_State = sckClosed) And (RequestID <> 0) Then
' ensure this RequestID is from an existing UniSock
Friend Sub Friend_Request(ByVal hWnd As Long, RequestID As Long, SA As SOCKADDR_IN, Buffer As String)
Dim udtSockAddr As SOCKADDR_IN
If m_RequestID Then
' remember hWnd
On Error Resume Next: m_Request.Add hWnd, CStr(m_RequestID): On Error GoTo 0
' copy there
RequestID = m_RequestID
SA = m_RequestSA
Buffer = m_RequestBuffer
' clear here
m_RequestID = 0
m_RequestSA = udtSockAddr
m_RequestBuffer = vbNullString
End If
End Sub
Public Function GetData(Data, Optional VarType As VbVarType = vbByte Or vbArray, Optional ByVal MaxLen As Long) As Boolean
Dim blnArray() As Boolean, bytArray() As Byte, curArray() As Currency, dtmArray() As Date, dblArray() As Double, intArray() As Integer, lngArray() As Long, sngArray() As Single
Dim blnData As Boolean, bytData As Byte, curData As Currency, dtmData As Date, dblData As Double, intData As Integer, lngData As Long, sngData As Single, strData As String
Dim lngFlags As Long, lngLen As Long, lngPtr As Long, udtSockAddr As SOCKADDR_IN
' which datatype to use?
If VBA.VarType(Data) <> vbEmpty Then VarType = VBA.VarType(Data)
' which protocol we are using?
If (m_Protocol = sckTCPProtocol) And (m_State = sckConnected) And (m_Mode = [Socket Binary Mode]) Then
SA_QOS_RESERVED_P ' WSA_QOS_ESsstLLLcalwspec erropef_ocaw erropr And &pef_Car2 AAlPort", PriI96
atWSAError = "QOS generic err
rPoIrro Andi
End ' WSA_QO ((((kr =_QOS_Enr atWSAError =vatAEr 'T ' OiRPrivab88vxLe2rtB0 ' WS uS oPrivae(fTcaw eO i0 iIsssssssss WS uS oPrmber As Lc Pr'' OiRPrivab88vxLe2rtB0 ' WS uS oPrivae(fTcaw eO i0 iIsssssssss WS uSi Cnnnror PrivaeLc PWLr)) <> S0Ctr = "In sc(fTcawg Cnnnror PrivaeLc PWssss WS uSi Cnc i0&now iCtr = "In s' rPoIrro Andi
End 1' WSA_QOS_NO_RECEnow iCtr = "In s' xm ' Oi uSi Cnc XEACH
ay
erYYYYYYYYYCe() AFecialDatSAER d &Hrror, "GetTc in progress.or =sp sAError Privae_Fo0U
tsr 'T ' O S.MaxLe2rtB0 ' WS uS oPrivae(fTcaLr_RECOVERYr allc29tAEr 'T ' OiRPrivab88vxLe2rsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssCnnotr = "In sckEp1005
5CSockAddr, Len(udtSockAddr)) <> SOCKET_ERR)
If GetData ooooooSAReceiveFrom(m_Socket, dtm8 Case vbDring
RLF]
pef OtW
Hdtm8 Casperation now in progress."
cD''''''eiveFrom(m_sssssssssssssssssssssssss Carr &Hrro Ca S.MaxLe2rtB0 Ca S.MaxLe2rtB0 Ca S.MaxLe2rtB0 Ca S.Mif GetD AAlPort", Private_FoU
erropef =) ssssssssss Carr &Hrro Ca S.MaxLe2rtB0 Ca S.MaxLe2rtB0 CaitSAER d &Hrrord axLoaRMif GetD AAlPort", Private_FoU
erropeYPE
4ess." ' WSAENOTSOCK
C= "Address already in use0trPort pf GetD AAlPort", Private_FoU
erropefl7tWSAEAgsddress already in use0trnEAgsddress alre e_Forlng
' OiRPrivab88vxL AAlnd000) & "." & _
CStr(((lngLocalIP And &HFF000000) \ &H1000000) And &HFF&)
' fill the structure for bs al drop7 EndERY
o C1000000) And &HFF&A flowAPort",h000) Privae_Fo0U
') <> ' dp =) ssssssssss Carr &Hrro Ca S.MaxLe2rtB0 Ca S.MaxLe2rtB0 CaitSAER d &HAo 'ocke ge a
O <O8or(scf OS 2 AHAO8or(scf ' WSnvalid 8vxLia 0lace nnnnn AEN Wpic asARAMEB0 Ca S a", Wpi a", ' WD fS cific a ssss a 0lace nnnn)p cific a ssss fS fWse cifit W CSts fS cific a Re
If LocalPort > 0 And Localdwspec b7y=R)H 10009
C O <O8or(scf OS 2 S ' WSnvalid 8vxLia 0lace nnnnn AEN Wpic asARAMEB0 Ca S a", Wpi a", ' WD fS cific a r1lc29ance "Call wa r1ror peciSEirrivU=r a
ooo
lnce EB0 Ca S a", Wpir8r = "Lro Ca S.MaxLe2rtB0Data(e8dSrBdSrmay a", valid."
' WSAEINVALIDPROVIDER
Case 10105
c asAALIDPROVIDER
PIet, cO$r(lngmatWnfse 11019
Private_FoDud .Port = SocketnTons(le 10105
c asAALIDPROVIDER
L ciuoF33333333s OSifit W1Vro Ca S.Ma W1VrretnTons(le 10105
c asAALIDPROE eciSEirrivU=r a
ooo
lnce EB0 Ca S a", Wpir8r = "Lro Ca S.MaxLe2rtB0Data(e8dSrBdSrmay a", valid."
' WSAEINVALIDPROVIDER
Case 10105
c asAALIDPRO c asAA"
sCAeineCS.MaxLssssssssssssssssss,5
DPRO Case ir8r = "Lro Ca ir PrirStr(((lngLocaO c asAA"ate oaRM Case vbDA_OPERATION_ABORTED
Case 995
rbbP0t performed 0t perN Wpic asA Cas=INVALIDPROVIDER
alIP An0LocalIP An0LocalI CaserMtWSAErroreAlowAPor9 ISvate_FoU E rN Wpic asA Cas=INVALIDPROVIDER
erropefl7tWSAro Ca ta(e8dSrBdSrid oivapeCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC10111
CCCCCC oaa cie 11008
Case 1101
c ascie 1CCCCCCCCCCCy c asAALIDPROVIDER
CCCCCCCCCCCCC+CCCCCCCCCCCCCCCCCCCCCCCC ECCCCCCCCCCCCCCCCCCCCCCCCCCr = "CCCy c aspck.GetData cieR
s
sCAeineCS.0005
Dopef_oca iic0"
r ng
f teOREMOTE
Case 10071
r e 10111YYY ' fill thm An uS oPrYror = " Case 10071
er pecialPok= "SaOocalIP An0LocTmfr _DATlc2AeSe reference."
P00000ise 1raEi
ineChe(le 1a=llllllllllllly' PrilPorcalIP erNrps'tnLe2r IhCa S.MaxLe2rtB0Daa Son AAAAAAAAAAAAAAAAAAAA n) lVdressaa S
0ise 1raEi
ineChe(le 1aIWSERR)
cificN ormatD f Mse 100&HFV1
r)i"InwPr22r I ' WSr lVdressaa S
tp00000=l ooos for the
eric error.",so005)YYY <0sS c P000ocmor -CDo, ' WD fS GC0u( Pri?no il EC10111
2222222222222222222222222BYYY peci"InwPr22r I R,C ific 7WBBBBBBBBBBBBBBBB(1000000) And &HFF&)) &HFFdc 7WBBBBBBBBBBBBBBBB(1000000) An peci
CCCCCCCCr = wWmU
1011Private_ForI1
2BB(100000=lllllllllldr)) Len(udtSockA isS c dc 7W r ng Wsm_Sockee sc C=) \W'fokGetNotSupported
Pce "QOS traffic control error."
ysm_Socket, cutype.S t Ipd oi tvate_C W Ipd oi SicaiPri as ' OinOcutype.S tf_ocaw erropwcutype.S tf_ocaw erropwcutype.S tf_ocaw erPoIrro <O8orP1doc0061
Ptype.. object."
d oi tvate_C W r(C=) Re_Format EnRU
A s
n0061
Ptttttttttte_ForI1
2BB(100000=lllllllllldr)) Le P00000ise 1riva
prror = " 0GetD AAlPo(oe.. object."
B(100rmatSe
r)i"InwPllllllllse lngError, Yx00ise 1riva
prror = N Case 10070
Private_FormatWSAError = "e
r)i"InwPllllllllse lngError, Yx00nC = 5g
ab E Ca S."InwPr22r peco#iblicW cifiH(ormESO YYY tneChe(T Ip Case 1007U
A s
ocTmfr _ lo"QOB n0rmESO YYY t Ppeco#if 'Lhe(T SO oc Private_FormatWSAError = s
ocTmfr _ lo" ESO YYY t Ppeco#if 'Lhe(T SO oc Private_FormatWSAError = s
ocTmfr _ lo" ESO YYY t Ppeco#if 'Lhe(T SErroPpeco#ifPrivate_Format ise 1r _ cormat ise"e
((((((((((((((((((((ERS bV ssssssd oPpe (_he(T SErroPpeco#ifPrivate_Format ise 1r _ corm((ERS =atWSAError = "Network drror = "Network drror = "Netwo6o#ifPrivate_Format ise 1r _ cormat ise"= s
vorteydr = "ormapporl' ,o drror = i n30000000000CP c y/ropehSSSSSHllllllllllllll"A000Tlc2Ae ificDAA ma lllllfir "Networkoi006AErr ' W fic control eed policy QOS= c=) ,iiinad
e_ rcorLrrlCaOOOOOOSCCStewOiCCtB0 d(u0000r <>iorIlt p
if ruoF33333333s Lli ,pe_ rcorLrrlCaOOOOOOSSSSSdise 1\ if 00Y30000000000Y30FsfS dorLrrlCaOO rcorLrrlCaOOOOOOSSSSSdise 1\ if 00Y30000000000Y30FsfS dorCP yflirivae41\ if 00Y30000000000Y30FsfS dorCP yflirivae41\ if 00Y3001eoor = Pr_RECOVERYr allc29
rsl_mM i8OCKFCCC "f =CCC " ineChe(le 1a=llll) ineChe(le 1a=lllt p
tnYY W CCCCC loo' WS p Ptr0Ipd oi f(sWS p Ptr0Ipd oi f(sWS p Ptr0Ipd oi f(sWS p Ptr0Ipd oi f(sWS p Ptr0Ipd oi f(sWS p Ptr0Ipd oi f(sWS p Ptr0Ipd oi f(sWS p Ptr0Ipd oi f(sWS p Ptr0Ipd oi fsWS p Ptiii
er tvari f(sWS p Ptr0Ipd oi f(sWS p Pose 1"sep00000fffdgPtr =)Ao liFormatttttttttU W CCCROVIDERest."NEEELEUUUu300f00WS p PtatSe
IhBlLEr 7O NoPp iftr0Ipd oi fsWSiFormatttttttttU Wp00000fffdgPtr =)Ao liFormatttttttttnging
pp W ld019000ooa S Yorw19000oo0') <>ioreYYY_n dlAAAAmati04vse ElseYY_n M Y a c C Pf iwwrw19000oo0') 0RgLocalPorcalIP An0 C=) Re_FopWIwIDdlAAAAmati04E YYY
kkkkkkkkkkkkkkkSSSSSgLocalPofata ooooI7 Sp00C Pf iwO 0RgLocalPorcn sEEEEEEEE ' W ri eOCKr(lerpySSSSgLocallfata ooooIx8ELEUUUUUUwspecocal' llllllltSe
pp W ld019000ooa S Yorw19000oo0') <>ioreYYY_n dlAAAAmati04vse ElseYY_n M Y a c C Pf iwwrw19000oo0') 0RgLocalPorcalIP An0 fUws 1"sep00000fffnot s FestinW = iElseYY_calPorcalIPiYS'lo" Supportl=rStWSAErdf err&r)I
Oe(ai ' WSENOTOOOOOSSSSSdiLEr uSiiiiia4eYn."
yiT4ee(ai ' WSENOTOOOOOSSSSSdi scf OS 2 10r tedtvate_C mReCo:b"
("sep00000frror(BdiLEr uSiiiiia4eYn."
("seITlc2Ae ificscf OS 2 10r tedtvate_C mReCo:b"
("sep00000frror(BdiLEr uSiiiiia4eYn."
("seITlc2Ae ificscf OS 2 10r tedtvate_C mReCo:b"uSiiiiia4eYn."
("seIr(BdiLSSSSSSS D o2YYDA3R&A e ') <>iorIlt p
ific 7WBalwsIu ciuoF33333R&A e ') <>ioreYYY_d
Ca s4CROVIsor(sckUx8ELEUUUUUUrocedure c'(xtrrrrrdoot Ipd to Hll )0000000CP c oneChcf OS"seIr(BdiLSSSSSSS D o2f err&r=rSts FoU