欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基 礎(chǔ) 函 數(shù) 參 考


TCPRecv

接收套接字(socket)連接的數(shù)據(jù).

TCPRecv ( 主套接字, 最大返回量 [, 標(biāo)志] )

參 數(shù)

主套接字 TCPAccept or a TCPConnect 函數(shù)返回的套接字標(biāo)識符.
最大返回量 max # 最大接收字符數(shù).
標(biāo)志 [可選參數(shù)] 設(shè)置為 1, 則強(qiáng)制函數(shù)返回二進(jìn)制數(shù)據(jù). (默認(rèn)為 0, 自行檢測二進(jìn)制/字符串?dāng)?shù)據(jù)).

返 回 值

成功: 返回套接字連接發(fā)送的二進(jìn)制/字符串.
失敗: 返回 "", 設(shè)置 @error
@error: -1 套接字錯誤
為 windows API WSAGetError 的返回值 (請查閱 MSDN).

備 注

為向后兼容的原因, 函數(shù)會嘗試返回默認(rèn)字符串. 如果收到空(0x00)字符, 則返回值將是一個二進(jìn)制類型.
要強(qiáng)制函數(shù)總是返回二進(jìn)位的數(shù)據(jù)(最好的選擇), 需要將"標(biāo)志"參數(shù)設(shè)置為 1.
如果需要傳遞 Unicode 字符串, 它們必須被 StringToBinary()/BinaryToString() 編/解碼.

相 關(guān) 函 數(shù)

TCPSend, BinaryLen, BinaryMid, TCPStartup, TCPAccept, TCPConnect, TCPTimeout (Option), BinaryToString

函 數(shù) 示 例


#include <GUIConstantsEx.au3>

;==============================================
;==============================================
;服務(wù)器!! 首先啟動我 !!!!!!!!!!!!!!!
;==============================================
;==============================================

Example()

Func Example()
    ; 設(shè)置一些可再用的信息
    ; 在這里設(shè)置您的公共IP地址 (@IPAddress1).
    ;   Local $szServerPC = @ComputerName
    ;   Local $szIPADDRESS = TCPNameToIP($szServerPC)
    Local $szIPADDRESS = @IPAddress1
    Local $nPORT = 33891
    Local $MainSocket, $edit, $ConnectedSocket, $szIP_Accepted
    Local $msg, $recv

    ; 啟動 TCP 服務(wù)
    ;==============================================
    TCPStartup()

    ; 建立監(jiān)聽套接字 "SOCKET".
    ;   使用您的IP地址和端口 33891.
    ;==============================================
    $MainSocket = TCPListen($szIPADDRESS, $nPORT)

    ; 如果套接字創(chuàng)建失敗, 則退出.
    If $MainSocket = -1 Then Exit


    ; 創(chuàng)建消息 GUI
    ;==============================================
    GUICreate("我的服務(wù)器 (IP: " & $szIPADDRESS & ")", 300, 200, 100, 100)
    $edit = GUICtrlCreateEdit("", 10, 10, 280, 180)
    GUISetState()


    ; 初始化代表連接的變量
    ;==============================================
    $ConnectedSocket = -1


    ;等待和接受連接
    ;==============================================
    Do
        $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1


    ; 獲取已連接用戶端接的 IP
    $szIP_Accepted = SocketToIP($ConnectedSocket)

    ; GUI 消息循環(huán)
    ;==============================================
    While 1
        $msg = GUIGetMsg()

        ; GUI 關(guān)閉
        ;--------------------
        If $msg = $GUI_EVENT_CLOSE Then ExitLoop

        ; 嘗試最多接收 2048 字節(jié)
        ;----------------------------------------------------------------
        $recv = TCPRecv($ConnectedSocket, 2048)

        ; 如果收到失敗 @error, 則斷開套接字 "socket"
        ;----------------------------------------------------------------
        If @error Then ExitLoop

        ; 轉(zhuǎn)換 UTF-8 到 AutoIt 原 UTF-16
        $recv = BinaryToString($recv, 4)

        ; 用我們接收的數(shù)據(jù)更新編輯控件
        ;----------------------------------------------------------------
        If $recv <> "" Then GUICtrlSetData($edit, _
                $szIP_Accepted & " > " & $recv & @CRLF & GUICtrlRead($edit))
    WEnd


    If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)

    TCPShutdown()
EndFunc   ;==>Example

; 函數(shù)將從一個連接套接字返回 IP 地址.
;----------------------------------------------------------------------
Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
            "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
        $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
        If Not @error Then $aRet = $aRet[0]
    Else
        $aRet = 0
    EndIf

    $sockaddr = 0

    Return $aRet
EndFunc   ;==>SocketToIP

provider with jb51.net (unicode)