亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? csocketmaster.cls

?? I implemented a perfect file transfer OCX client/server. I created a perfect function to parse and s
?? CLS
?? 第 1 頁 / 共 4 頁
字號(hào):
    If GetBufferLenUDP = 0 Then Exit Sub
End If

If Not IsMissing(maxLen) Then
    If IsNumeric(maxLen) Then
        If CLng(maxLen) < 0 Then
            Err.Raise sckInvalidArg, "CSocketMaster.GetData", "The argument passed to a function was not in the correct format or in the specified range."
        End If
    Else
        If m_enmProtocol = sckTCPProtocol Then
            maxLen = Len(m_strRecvBuffer)
        Else
            maxLen = GetBufferLenUDP
        End If
    End If
End If

Dim lngBytesRecibidos  As Long

lngBytesRecibidos = RecvData(Data, False, varType, maxLen)
Debug.Print "OK Bytes obtained from buffer: " & lngBytesRecibidos

End Sub

Public Sub PeekData(ByRef Data As Variant, Optional varType As Variant, Optional maxLen As Variant)

If m_enmProtocol = sckTCPProtocol Then
    If m_enmState <> sckConnected Then
        Err.Raise sckBadState, "CSocketMaster.PeekData", "Wrong protocol or connection state for the requested transaction or request"
        Exit Sub
    End If
Else
    If m_enmState <> sckOpen Then
        Err.Raise sckBadState, "CSocketMaster.PeekData", "Wrong protocol or connection state for the requested transaction or request"
        Exit Sub
    End If
    If GetBufferLenUDP = 0 Then Exit Sub
End If

If Not IsMissing(maxLen) Then
    If IsNumeric(maxLen) Then
        If CLng(maxLen) < 0 Then
            Err.Raise sckInvalidArg, "CSocketMaster.PeekData", "The argument passed to a function was not in the correct format or in the specified range."
        End If
    Else
        If m_enmProtocol = sckTCPProtocol Then
            maxLen = Len(m_strRecvBuffer)
        Else
            maxLen = GetBufferLenUDP
        End If
    End If
End If

Dim lngBytesRecibidos  As Long

lngBytesRecibidos = RecvData(Data, True, varType, maxLen)
Debug.Print "OK Bytes obtained from buffer: " & lngBytesRecibidos
End Sub


'This function is to retrieve data from the buffer. If we are using TCP
'then the data is retrieved from a local buffer (m_strRecvBuffer). If we
'are using UDP the data is retrieved from winsock buffer.
'It can be called by two public methods of the class - GetData and PeekData.
'Behavior of the function is defined by the blnPeek argument. If a value of
'that argument is TRUE, the function returns number of bytes in the
'buffer, and copy data from that buffer into the data argument.
'If a value of the blnPeek is FALSE, then this function returns number of
'bytes received, and move data from the buffer into the data
'argument. MOVE means that data will be removed from the buffer.
Private Function RecvData(ByRef Data As Variant, ByVal blnPeek As Boolean, Optional varClass As Variant, Optional maxLen As Variant) As Long

Dim blnMaxLenMiss   As Boolean
Dim blnClassMiss    As Boolean
Dim strRecvData     As String
Dim lngBufferLen    As Long
Dim arrBuffer()     As Byte
Dim lngErrorCode    As Long

If m_enmProtocol = sckTCPProtocol Then
    lngBufferLen = Len(m_strRecvBuffer)
Else
    lngBufferLen = GetBufferLenUDP
End If

blnMaxLenMiss = IsMissing(maxLen)
blnClassMiss = IsMissing(varClass)

'Select type of data
If varType(Data) = vbEmpty Then
    If blnClassMiss Then varClass = vbArray + vbByte
Else
    varClass = varType(Data)
End If

'As stated on Winsock control documentation if the
'data type passed is string or byte array type then
'we must take into account maxLen argument.
'If it is another type maxLen is ignored.
If varClass = vbString Or varClass = vbArray + vbByte Then

    If blnMaxLenMiss Then 'if maxLen argument is missing
    
        If lngBufferLen = 0 Then
        
            RecvData = 0
        
            arrBuffer = StrConv("", vbFromUnicode)
            Data = arrBuffer

            Exit Function
    
        Else
            
            RecvData = lngBufferLen
            BuildArray lngBufferLen, blnPeek, lngErrorCode, arrBuffer

        End If

    Else 'if maxLen argument is not missing

        If maxLen = 0 Or lngBufferLen = 0 Then

            RecvData = 0
        
            arrBuffer = StrConv("", vbFromUnicode)
            Data = arrBuffer
            
            If m_enmProtocol = sckUDPProtocol Then
                EmptyBuffer
                Err.Raise WSAEMSGSIZE, "CSocketMaster.RecvData", GetErrorDescription(WSAEMSGSIZE)
            End If
            
            Exit Function
        
        ElseIf maxLen > lngBufferLen Then
            
            RecvData = lngBufferLen
            BuildArray lngBufferLen, blnPeek, lngErrorCode, arrBuffer

        Else
            
            RecvData = CLng(maxLen)
            BuildArray CLng(maxLen), blnPeek, lngErrorCode, arrBuffer

        End If
    
    End If
        
End If

    Select Case varClass
    
    Case vbString
        Dim strData As String
        strData = StrConv(arrBuffer(), vbUnicode)
        Data = strData
    Case vbArray + vbByte
        Data = arrBuffer
    Case vbBoolean
        Dim blnData As Boolean
        If LenB(blnData) > lngBufferLen Then Exit Function
        BuildArray LenB(blnData), blnPeek, lngErrorCode, arrBuffer
        RecvData = LenB(blnData)
        api_CopyMemory blnData, arrBuffer(0), LenB(blnData)
        Data = blnData
    Case vbByte
        Dim bytData As Byte
        If LenB(bytData) > lngBufferLen Then Exit Function
        BuildArray LenB(bytData), blnPeek, lngErrorCode, arrBuffer
        RecvData = LenB(bytData)
        api_CopyMemory bytData, arrBuffer(0), LenB(bytData)
        Data = bytData
    Case vbCurrency
        Dim curData As Currency
        If LenB(curData) > lngBufferLen Then Exit Function
        BuildArray LenB(curData), blnPeek, lngErrorCode, arrBuffer
        RecvData = LenB(curData)
        api_CopyMemory curData, arrBuffer(0), LenB(curData)
        Data = curData
    Case vbDate
        Dim datData As Date
        If LenB(datData) > lngBufferLen Then Exit Function
        BuildArray LenB(datData), blnPeek, lngErrorCode, arrBuffer
        RecvData = LenB(datData)
        api_CopyMemory datData, arrBuffer(0), LenB(datData)
        Data = datData
    Case vbDouble
        Dim dblData As Double
        If LenB(dblData) > lngBufferLen Then Exit Function
        BuildArray LenB(dblData), blnPeek, lngErrorCode, arrBuffer
        RecvData = LenB(dblData)
        api_CopyMemory dblData, arrBuffer(0), LenB(dblData)
        Data = dblData
    Case vbInteger
        Dim intData As Integer
        If LenB(intData) > lngBufferLen Then Exit Function
        BuildArray LenB(intData), blnPeek, lngErrorCode, arrBuffer
        RecvData = LenB(intData)
        api_CopyMemory intData, arrBuffer(0), LenB(intData)
        Data = intData
    Case vbLong
        Dim lngData As Long
        If LenB(lngData) > lngBufferLen Then Exit Function
        BuildArray LenB(lngData), blnPeek, lngErrorCode, arrBuffer
        RecvData = LenB(lngData)
        api_CopyMemory lngData, arrBuffer(0), LenB(lngData)
        Data = lngData
    Case vbSingle
        Dim sngData As Single
        If LenB(sngData) > lngBufferLen Then Exit Function
        BuildArray LenB(sngData), blnPeek, lngErrorCode, arrBuffer
        RecvData = LenB(sngData)
        api_CopyMemory sngData, arrBuffer(0), LenB(sngData)
        Data = sngData
    Case Else
        Err.Raise sckUnsupported, "CSocketMaster.RecvData", "Unsupported variant type."
       
    End Select

'if BuildArray returns an error is handled here
If lngErrorCode <> 0 Then
    Err.Raise lngErrorCode, "CSocketMaster.RecvData", GetErrorDescription(lngErrorCode)
End If

End Function

'Returns a byte array of Size bytes filled with incoming buffer data.
Private Sub BuildArray(ByVal Size As Long, ByVal blnPeek As Boolean, ByRef lngErrorCode As Long, ByRef bytArray() As Byte)
Dim strData As String

If m_enmProtocol = sckTCPProtocol Then
        
    strData = Left$(m_strRecvBuffer, CLng(Size))
    bytArray = StrConv(strData, vbFromUnicode)
                
    If Not blnPeek Then
        m_strRecvBuffer = Mid$(m_strRecvBuffer, Size + 1)
    End If

Else 'UDP protocol
    Dim arrBuffer() As Byte
    Dim lngResult As Long
    Dim udtSockAddr As sockaddr_in
    Dim lngFlags As Long
    
    If blnPeek Then lngFlags = MSG_PEEK
    
    ReDim arrBuffer(Size - 1)
    
    lngResult = api_recvfrom(m_lngSocketHandle, arrBuffer(0), Size, lngFlags, udtSockAddr, LenB(udtSockAddr))
    
    If lngResult = SOCKET_ERROR Then
        lngErrorCode = Err.LastDllError
    End If
    
    bytArray = arrBuffer
    GetRemoteInfoFromSI udtSockAddr, m_lngRemotePort, m_strRemoteHostIP, m_strRemoteHost
    
End If
End Sub

'Clean resolution system that is in charge of
'asynchronous hostname resolutions.
Private Sub CleanResolutionSystem()
Dim varAsynHandle As Variant
Dim lngResult As Long

'cancel async resolutions if they're still running
For Each varAsynHandle In m_colWaitingResolutions
    lngResult = api_WSACancelAsyncRequest(varAsynHandle)
    If lngResult = 0 Then
        modSocketMaster.UnregisterResolution varAsynHandle
        
        Set m_colWaitingResolutions = Nothing
        Set m_colWaitingResolutions = New Collection

        'free memory buffer where resolution results are stored
        FreeMemory
        
    End If
Next

End Sub

Public Sub Listen()
If m_enmState <> sckClosed And m_enmState <> sckOpen Then
    Err.Raise sckInvalidOp, "CSocketMaster.Listen", "Invalid operation at current state"
End If

If Not SocketExists Then Exit Sub
If Not BindInternal Then Exit Sub

Dim lngResult As Long

lngResult = api_listen(m_lngSocketHandle, SOMAXCONN)

If lngResult = SOCKET_ERROR Then
    Dim lngErrorCode As Long
    lngErrorCode = Err.LastDllError
    Err.Raise lngErrorCode, "CSocketMaster.Listen", GetErrorDescription(lngErrorCode)
Else
    m_enmState = sckListening: Debug.Print "STATE: sckListening"
End If

End Sub

Public Sub Accept(requestID As Long)
If m_enmState <> sckClosed Then
    Err.Raise sckInvalidOp, "CSocketMaster.Accept", "Invalid operation at current state"
End If

m_lngSocketHandle = requestID
m_enmProtocol = sckTCPProtocol
ProcessOptions

If Not modSocketMaster.IsAcceptRegistered(requestID) Then
    If IsSocketRegistered(requestID) Then
        m_lngSocketHandle = INVALID_SOCKET
        m_lngRecvBufferLen = 0
        m_lngSendBufferLen = 0
        Err.Raise sckBadState, "CSocketMaster.Accept", "Wrong protocol or connection state for the requested transaction or request"
    Else
        m_blnAcceptClass = True
        m_enmState = sckConnected: Debug.Print "STATE: sckConnected"
        GetLocalInfo m_lngSocketHandle, m_lngLocalPortBind, m_strLocalIP
        modSocketMaster.RegisterSocket m_lngSocketHandle, ObjPtr(Me), False
        Exit Sub
    End If
End If

Dim clsSocket As CSocketMaster
Set clsSocket = GetAcceptClass(requestID)
modSocketMaster.UnregisterAccept requestID

GetLocalInfo m_lngSocketHandle, m_lngLocalPortBind, m_strLocalIP
GetRemoteInfo m_lngSocketHandle, m_lngRemotePort, m_strRemoteHostIP, m_strRemoteHost

m_enmState = sckConnected: Debug.Print "STATE: sckConnected"

If clsSocket.BytesReceived > 0 Then
    clsSocket.GetData m_strRecvBuffer
End If

modSocketMaster.Subclass_ChangeOwner requestID, ObjPtr(Me)

If Len(m_strRecvBuffer) > 0 Then RaiseEvent DataArrival(Len(m_strRecvBuffer))

If clsSocket.State = sckClosing Then
    m_enmState = sckClosing: Debug.Print "STATE: sckClosing"
    RaiseEvent CloseSck
End If

Set clsSocket = Nothing
End Sub

'Retrieves local info from a connected socket.
'If succeeds returns TRUE and loads the arguments.
'If fails returns FALSE and arguments are not loaded.
Private Function GetLocalInfo(ByVal lngSocket As Long, ByRef lngLocalPort As Long, ByRef strLocalIP As String) As Boolean
GetLocalInfo = False
Dim lngResult As Long
Dim udtSockAddr As sockaddr_in

lngResult = api_getsockname(lngSocket, udtSockAddr, LenB(udtSockAddr))

If lngResult = SOCKET_ERROR Then
    lngLocalPort = 0
    strLocalIP = ""
Else
    GetLocalInfo = True
    lngLocalPort = IntegerToUnsigned(api_ntohs(udtSockAddr.sin_port))
    strLocalIP = StringFromPointer(api_inet_ntoa(udtSockAddr.sin_addr))
End If

End Function

'Retrieves remote info from a connected socket.
'If succeeds returns TRUE and loads the arguments.
'If fails returns FALSE and arguments are not loaded.
Private Function GetRemoteInfo(ByVal lngSocket As Long, ByRef lngRemotePort As Long, ByRef strRemoteHostIP As String, ByRef strRemoteHost As String) As Boolean
GetRemoteInfo = False
Dim lngResult As Long
Dim udtSockAddr As sockaddr_in

lngResult = api_getpeername(lngSocket, udtSockAddr, LenB(udtSockAddr))

If lngResult = 0 Then
    GetRemoteInfo = True
    GetRemoteInfoFromSI udtSockAddr, lngRemotePort, strRemoteHostIP, strRemoteHost
Else
   lngRemotePort = 0
   strRemoteHostIP = ""
   strRemoteHost = ""
End If
End Function

'Gets remote info from a sockaddr_in structure.
Private Sub GetRemoteInfoFromSI(ByRef udtSockAddr As sockaddr_in, ByRef lngRemotePort As Long, ByRef strRemoteHostIP As String, ByRef strRemoteHost As String)

'Dim lngResult As Long
'Dim udtHostent As HOSTENT

lngRemotePort = IntegerToUnsigned(api_ntohs(udtSockAddr.sin_port))
strRemoteHostIP = StringFromPointer(api_inet_ntoa(udtSockAddr.sin_addr))
'lngResult = api_gethostbyaddr(udtSockAddr.sin_addr, 4&, AF_INET)

'If lngResult <> 0 Then
'    api_CopyMemory udtHostent, ByVal lngResult, LenB(udtHostent)
'    strRemoteHost = StringFromPointer(udtHostent.hName)
'Else
'    strRemoteHost = ""
'End If

End Sub

'Returns winsock incoming buffer length from an UDP socket.
Private Function GetBufferLenUDP() As Long
Dim lngResult As Long
Dim lngBuffer As Long
lngResult = api_ioctlsocket(m_lngSocketHandle, FIONREAD, lngBuffer)

If lngResult = SOCKET_ERROR Then
    GetBufferLenUDP = 0
Else
    GetBufferLenUDP = lngBuffer
End If
End Function

'Empty winsock incoming buffer from an UDP socket.
Private Sub EmptyBuffer()
Dim B As Byte
api_recv m_lngSocketHandle, B, Len(B), 0&
End Sub

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线精品一区二区三区不卡| 91精品久久久久久久99蜜桃| 国产成人精品免费网站| 美洲天堂一区二卡三卡四卡视频| 亚洲不卡在线观看| 午夜精品福利视频网站| 亚洲成人av免费| 亚洲成人三级小说| 日韩精彩视频在线观看| 丝袜国产日韩另类美女| 日本欧美一区二区三区乱码| 日本91福利区| 韩国一区二区三区| 国产黄人亚洲片| www.成人在线| 色综合久久久久综合99| 欧美午夜精品久久久| 欧美日本在线观看| 日韩欧美精品在线| 国产婷婷色一区二区三区在线| 中文在线免费一区三区高中清不卡| 欧美极品美女视频| 自拍偷拍亚洲欧美日韩| 亚洲国产综合人成综合网站| 日韩精品欧美精品| 精品中文字幕一区二区小辣椒 | 国产一区二区在线影院| 国产一区福利在线| www.欧美日韩| 欧美日韩精品一区二区三区| 日韩精品中午字幕| 国产精品污污网站在线观看| 亚洲女爱视频在线| 日产国产高清一区二区三区| 国产综合色精品一区二区三区| 国产成人综合精品三级| fc2成人免费人成在线观看播放| 欧美在线视频全部完| 日韩一二三区不卡| 国产精品久久影院| 午夜日韩在线电影| 国产精品一区二区三区乱码 | 欧美一区二区成人| 久久女同互慰一区二区三区| 日韩伦理免费电影| 日av在线不卡| av电影在线观看不卡 | 亚洲电影欧美电影有声小说| 美女精品一区二区| www.欧美色图| 日韩欧美中文字幕制服| 国产精品国产三级国产aⅴ入口 | 精品日本一线二线三线不卡| 国产精品无圣光一区二区| 精品精品欲导航| 久久亚洲免费视频| 一区二区三区在线观看视频| 看电影不卡的网站| 一本色道**综合亚洲精品蜜桃冫| 欧美一区二区三区白人| 欧美极品aⅴ影院| 日韩三级av在线播放| caoporm超碰国产精品| 欧美大片日本大片免费观看| 色综合色狠狠天天综合色| 亚洲成人免费av| 欧美午夜片在线看| 国产精品正在播放| 韩国一区二区三区| 亚洲自拍与偷拍| 91丝袜美腿高跟国产极品老师| 中文字幕欧美区| 久久精品国产亚洲高清剧情介绍| 亚洲国产视频一区二区| 久久久国产精华| 日韩精品一区二区三区在线观看| 92国产精品观看| 国产综合一区二区| 日本成人超碰在线观看| 午夜日韩在线电影| 国产精品乱子久久久久| 2024国产精品视频| 成人精品一区二区三区四区| 1024成人网| 国产精品午夜免费| 欧美一级欧美一级在线播放| 欧美一级艳片视频免费观看| 成人黄色av网站在线| 男女性色大片免费观看一区二区| 亚洲欧洲日韩女同| 亚洲精品一区二区在线观看| 91视视频在线直接观看在线看网页在线看| 一区二区高清视频在线观看| 日韩午夜av一区| 另类欧美日韩国产在线| 日韩欧美电影一二三| 国产精品18久久久久久久久| 精品国产精品网麻豆系列| 麻豆一区二区三区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美午夜免费电影| 亚洲女人的天堂| 亚洲一区二区三区四区在线| 久久无码av三级| 欧美精品久久一区二区三区| www.亚洲激情.com| 日韩精彩视频在线观看| 蜜臀久久久99精品久久久久久| 视频一区中文字幕国产| 国产日韩欧美综合一区| 欧美精品一卡两卡| 中文在线资源观看网站视频免费不卡 | 亚洲欧美另类图片小说| 欧美丰满美乳xxx高潮www| 日韩一级免费一区| 美女视频黄久久| 久久久不卡网国产精品二区| 国产精品538一区二区在线| 国产日韩欧美制服另类| 91在线看国产| 一区二区三区不卡视频在线观看 | 日韩三级免费观看| 黑人巨大精品欧美一区| 国产人成亚洲第一网站在线播放| 国产成人精品亚洲午夜麻豆| 中文字幕中文字幕一区| 在线观看av不卡| 日本中文一区二区三区| 久久综合九色综合欧美就去吻| 国产成人av电影| 亚洲黄色av一区| 欧美一级在线免费| 国产91丝袜在线18| 亚洲欧美日韩国产另类专区| 欧美日韩国产在线播放网站| 久久99久久99| 国产精品久久久久国产精品日日| 色婷婷av一区| 日韩精品1区2区3区| 国产日韩三级在线| 欧美日韩在线亚洲一区蜜芽| 美女免费视频一区二区| 国产精品久久看| 欧美嫩在线观看| 国产盗摄女厕一区二区三区| 亚洲天堂精品视频| 日韩欧美中文字幕公布| 99综合电影在线视频| 日本va欧美va欧美va精品| 精品国产乱码久久久久久图片| 99精品视频一区二区三区| 日本美女视频一区二区| 制服丝袜av成人在线看| 日本vs亚洲vs韩国一区三区二区 | 亚洲男人的天堂在线aⅴ视频| 欧美午夜免费电影| 国产精品一区一区| 亚洲电影一级黄| 国产日韩成人精品| 欧美三级视频在线观看| 国产精品原创巨作av| 亚洲国产成人av| 欧美激情一区三区| 欧美顶级少妇做爰| 97国产一区二区| 九九在线精品视频| 一区二区三区国产豹纹内裤在线| 久久久久久麻豆| 8x8x8国产精品| 91麻豆免费看| 国产一区二区伦理片| 无码av中文一区二区三区桃花岛| 国产精品三级视频| 精品国免费一区二区三区| 欧洲精品在线观看| 波多野结衣亚洲| 国产美女在线观看一区| 亚洲va欧美va天堂v国产综合| 欧美激情在线一区二区| 日韩一区二区三区电影在线观看| 91丨porny丨首页| 夫妻av一区二区| 久久99精品久久只有精品| 午夜欧美一区二区三区在线播放| 亚洲国产岛国毛片在线| 2020国产成人综合网| 欧美挠脚心视频网站| 91免费看视频| 成人精品一区二区三区四区| 精品亚洲国产成人av制服丝袜| 亚洲成人免费在线| 亚洲精品国产精华液| 国产精品久久久久久久久免费相片 | 一区二区三区四区视频精品免费| 久久你懂得1024| 精品国产一区二区三区忘忧草| 欧美精品久久久久久久多人混战| 在线一区二区三区做爰视频网站| 成人动漫精品一区二区| 福利电影一区二区|