函数参考


TCPSend

在已经连接的套接字(socket)上面发送数据.

TCPSend ( 主套接字, 数据 )

参数

主套接字 一个已经连接的套接字标识 (SocketID),返回于 TCPConnect 函数.
数据 要发送给已连接的套接字的二进制数据/字符串.

返回值

成功: 返回发送到已经连接的套接字的字节数量.
失败: 返回 0 并设置 @error 的值.
@error: windows API WSAGetError 返回值 (参考 MSDN).

注意/说明

如果要传输一个 Unicode 字符串,请使用 StringToBinary()/BinaryToString() 进行编码解码.

相关

TCPRecv, TCPStartup, TCPConnect, TCPListen, TCPTimeout (Option), StringToBinary

示例/演示


;==============================================
;==============================================
;客户端! 运行前必须确保服务端已运行(客户端为发送信息方)
;==============================================
;==============================================

Example()

Func Example()
    ; 开始 TCP 服务
    ;==============================================
    TCPStartup()

    ; 设置一些常用信息
    ;--------------------------
    Local $ConnectedSocket, $szData
    ; 设置 $szIPADDRESS 为服务端IP. 这里使用本地的机器名称转换为 IP 地址
    ;   Local $szServerPC = @ComputerName
    ;   Local $szIPADDRESS = TCPNameToIP($szServerPC)
    Local $szIPADDRESS = @IPAddress1
    Local $nPORT = 33891

    ; 初始化一个变量描述连接
    ;==============================================
    $ConnectedSocket = -1

    ;尝试连接到服务端IP的 33891 端口.
    ;=======================================================
    $ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)

    ; 如果发生了错误... 显示出来
    If @error Then
        MsgBox(4112, "错误", "TCP连接失败,服务端未启用!错误代码: " & @error)
        ; 如果这里没有错误,就循环一个 inputbox 用于发送数据
        ; 到服务端
    Else
        ;不断循环,每次将询问发送什么数据给服务端
        While 1
            ; 使用 InputBox 得到要发送的数据
            $szData = InputBox("发送数据给服务端", @LF & @LF & "输入一个要发送给服务端的数据:")

            ; 如果点击了 InputBox 的取消按钮或者使用一个空数据将退出这个循环
            If @error Or $szData = "" Then ExitLoop

            ; 我们确保在 $szData 中有数据... 然后尝试通过连接发送数据.
            ; convert AutoIt native UTF-16 to UTF-8
            TCPSend($ConnectedSocket, StringToBinary($szData, 4))

            ; 如果发送失败(@error)将断开连接
            ;----------------------------------------------------------------
            If @error Then ExitLoop
        WEnd
    EndIf
EndFunc   ;==>Example