• 【matlab网络通信】tcpserver参数详解


    tcpserver

    创建 TCP/IP 服务器

    文章目录

    描述

    对象表示从指定的 IP 地址和端口号接收 TCP/IP 客户端连接请求并接受该请求的 TCP/IP 服务器。服务器建立连接后,可以使用读取和写入功能从客户端接收数据以及将数据发送到客户端。每个对象一次仅支持一个客户端连接。tcpserver tcpserver

    语法

    t = tcpserver(address,port)
    t = tcpserver(port)
    t = tcpserver(___,Name,Value)
    
    • 1
    • 2
    • 3

    描述

    t = tcpserver(地址,端口)`创建一个 TCP/IP 服务器,该服务器在 指定的 IP 地址和 指定的端口号处侦听 TCP/IP 客户端连接请求。`address``port
    
    • 1

    输入参数设置属性,输入参数设置属性。address ServerAddress port ServerPort

    t = tcpserver(port)` 创建一个 TCP/IP 服务器,该服务器在端口号和 IP 地址处侦听客户端连接请求。此 IP 地址表示服务器接受来自计算机上任何有效 IP 地址的客户端连接。`port``"::"
    
    • 1
    t = tcpserver(___,Name,Value)` 创建一个 TCP/IP 服务器,并使用一个或多个名称-值对参数设置其他[属性](https://ww2.mathworks.cn/help/releases/R2021b/instrument/tcpserver.html#mw_3b2cfca9-68b5-493d-beeb-953e85480aab)。使用名称-值对参数设置 、 和 属性。在上述语法中的任何输入参数组合之后,将每个属性名称括在引号中,后跟属性值。`Timeout``ByteOrder``ConnectionChangedFcn
    
    • 1

    例如,创建一个 TCP/IP 服务器,该服务器侦听 IP 地址处的端口上的连接。它将超时周期设置为 20 秒,将字节顺序设置为大端。t = tcpserver(4000,"Timeout",20,"ByteOrder","big-endian") 4000 "::"

    性能

    [全部折叠](javascript:void(0)😉

    对象创建属性

    ServerAddress— 服务器侦听 “::”(默认)|的 IP 地址字符向量|字符串标量

    服务器侦听 TCP/IP 客户端连接的 IP 地址,指定为字符向量或字符串标量。可以将此属性设置为计算机的任何有效 IPV4 地址、IPV6 地址或主机名。只能在创建对象时设置此属性。

    **示例:**侦听端口 4000 和 IP 地址 144.212.100.10 处的连接。t = tcpserver("144.212.100.10",4000)

    注意

    如果在创建对象时指定主机名,则会将其解析为 IPV4 或 IPV6 地址并设置为解析的 IP 地址。tcpserver ServerAddress

    数据类型: |char string

    ServerPort— 服务器侦听数字的 端口号

    服务器侦听 TCP/IP 客户端连接的端口号,指定为介于 1 和 65535 之间的数字(包括 1 和 65535)。只能在创建对象时设置此属性。

    **示例:**侦听端口 4000 和 IP 地址 144.212.100.10 处的连接。t = tcpserver("144.212.100.10",4000)

    数据类型:double

    Timeout— 允许的时间完成读写操作 10(缺省值)|数值的

    允许以秒为单位完成读取和写入操作的时间,指定为数值。在创建对象时使用名称-值对参数设置此属性。您也可以在创建对象后使用点表示法对其进行更改。

    **示例:**将读/写超时期限设置为 20 秒。t = tcpserver("144.212.100.10",4000,"Timeout",20)

    数据类型:double

    ByteOrder— 字节 的顺序“小端”(默认)|“大端”

    按顺序排列字节为较大的数值,指定为 或 。这仅适用于以下数值数据类型:、、、、和 。在创建对象时使用名称-值对参数设置此属性。您也可以在创建对象后使用点表示法对其进行更改。"little-endian" "big-endian" uint16 int16 uint32 int32 uint64 int64 single double

    **示例:**将字节顺序设置为大端序。t = tcpserver("144.212.100.10",4000,"ByteOrder","big-endian")

    数据类型: |char string

    ConnectionChangedFcn— 由连接或断开连接事件 函数句柄触发的回调函数

    由连接或断开连接事件触发的回调函数,指定为函数句柄。当 TCP/IP 客户端连接到服务器或从服务器断开连接时,将发生连接或断开连接事件。在创建对象时使用名称-值对参数设置此属性。您也可以在创建对象后使用点表示法对其进行更改。在分配函数句柄之前,此属性为空。

    **示例:**将连接回调函数设置为 。当客户端连接或断开连接时,将触发。t = tcpserver("144.212.100.10",4000,"ConnectionChangedFcn",@myConnectionFcn) myConnectionFcn myConnectionFcn

    数据类型:function_handle

    连接属性

    Connected— 服务器连接状态 为false0(默认)|true1

    此属性是只读的。

    服务器连接状态,以数字或逻辑 () 或 () 的形式返回。如果此属性的值为 ,则 TCP/IP 客户端连接到服务器。1 true 0 false true

    一次只能连接到一个客户端。如果一个客户端与服务器断开连接,您可以立即连接到另一个客户端。

    数据类型:logical

    ClientAddress— 已连接客户端 “”(默认)的 IP 地址|字符串标量

    此属性是只读的。

    已连接客户端的 IP 地址,以字符串形式返回。此属性的值与客户端的 IP 地址匹配。此属性的值为空,直到 TCP/IP 客户端建立与服务器的连接。如果客户端与服务器断开连接,则此属性的值将变为空。

    **示例:**返回已连接客户端的 IP 地址。t.ClientAddress

    数据类型:string

    ClientPort— 已连接客户端 的端口号 [](默认)|数值的

    此属性是只读的。

    已连接客户端的端口号,以双精度形式返回。此属性的值为空,直到 TCP/IP 客户端建立与服务器的连接。

    **示例:**返回已连接客户端的端口号。t.ClientPort

    数据类型:double

    读取和写入属性

    Terminator— 数据 “LF”(默认)|的终止符字符“CR” |“CR/LF” |0 到 255

    用于读取和写入 ASCII 终止数据的终止符字符,以 、 、 或 0 到 255 之间的数字整数(包括 0 和 255)的形式返回。如果读取和写入终止符不同,则作为这些值的 1x2 单元格数组返回。使用配置终端程序函数设置此属性。"LF" "CR" "CR/LF" Terminator

    **示例:**将读取和写入终止符都设置为 。configureTerminator(t,"CR") "CR"

    **示例:**将读取终止符设置为 ,将写终止符设置为 。configureTerminator(t,"CR",10) "CR" 10

    数据类型: | |double char string

    NumBytesAvailable— 可读取 0 的字节数(默认)|数值的

    此属性是只读的。

    可读取的字节数,以数值形式返回。

    **示例:**返回可供读取的字节数。t.NumBytesAvailable

    数据类型:double

    NumBytesWritten— 写入 的总字节数 0(默认值)|数值的

    此属性是只读的。

    写入的总字节数,以数值形式返回。当客户端断开连接或重新连接到服务器时,此属性的值不会重置为 0。

    **示例:**返回写入的字节数。t.NumBytesWritten

    数据类型:double

    回调属性

    BytesAvailableFcnMode— 字节可用回调触发模式 “关闭”(默认)|

    字节可用回调触发模式,以 、 或 的形式返回。此设置确定回调是关闭的、是由 指定的字节数触发的,还是由 指定的终止符触发的。使用 configureCallback 函数设置此属性。"off" "byte" "terminator" BytesAvailableFcnCount Terminator

    **示例:**将回调设置为每次有 50 个字节的新数据可供读取时触发。configureCallback(t,"byte",50,@callbackFcn)``callbackFcn

    **示例:**将回调设置为在终止符可供读取时触发。configureCallback(t,"terminator",@callbackFcn)``callbackFcn

    **示例:**关闭回调。configureCallback(t,"off")

    数据类型: |char string

    BytesAvailableFcnCount— 触发回 调的数据字节数 64(默认)|数值的

    触发 由 指定的回调的数据字节数,以双精度形式返回。仅当属性为 时,才使用此值。使用 configureCallback 函数设置这些属性。BytesAvailableFcn BytesAvailableFcnMode "byte"

    **示例:**将回调设置为每次有 50 个字节的新数据可供读取时触发。configureCallback(t,"byte",50,@callbackFcn) callbackFcn

    数据类型:double

    BytesAvailableFcn— 回调函数由字节触发可用事件 函数句柄

    由字节可用事件触发的回调函数,作为函数句柄返回。字节可用事件是通过接收一定数量的字节或终止符生成的。在分配函数句柄之前,此属性为空。使用 configureCallback 函数设置此属性。

    **示例:**将回调设置为每次有 50 个字节的新数据可供读取时触发。configureCallback(t,"byte",50,@callbackFcn) callbackFcn

    数据类型:function_handle

    ErrorOccurredFcn— 由错误事件 函数句柄触发的回调函数

    由错误事件触发的回调函数,作为函数句柄返回。当服务器的网络连接中断或丢失时,将生成错误事件。在分配函数句柄之前,此属性为空。

    例: t.ErrorOccurredFcn = @myErrorFcn

    数据类型:function_handle

    UserData— 任何类型的用户数据的 通用属性

    用户数据的通用属性,作为任何 MATLAB 数据类型返回。例如,可以使用此属性来存储来自回调函数的数据。®

    例: t.UserData

    对象函数

    read读取发送到 TCP/IP 服务器的数据
    readline读取发送到 TCP/IP 服务器的 ASCII 字符串数据行
    readbinblock读取发送到 TCP/IP 服务器的一个数据箱块
    write从 TCP/IP 服务器写入数据
    writeline从 TCP/IP 服务器写入 ASCII 数据行
    writebinblock从 TCP/IP 服务器写入一个数据箱块
    configureTerminator用于 ASCII 字符串通信的设置终止符
    configureCallback设置通信回调函数和触发条件
    flush清除缓冲区以使用 TCP/IP 服务器进行通信

    例子

    [全部折叠](javascript:void(0)😉

    创建侦听 IP 地址和端口号的 TCP/IP 服务器

    复制命令复制代码

    创建一个名为 TCP/IP 服务器,用于侦听计算机的 IP 地址和端口 4000 处的连接。您的 IP 地址与此示例中的 IP 地址不同。它必须是计算机上适配器的任何有效 IPV4 地址、IPV6 地址或主机名。t

    t = tcpserver("172.28.200.145",4000)
    t = 
      TCPServer with properties:
    
            ServerAddress: "172.28.200.145"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    、 和 属性的值指示 TCP/IP 客户端未连接到服务器。Connected ClientAddress ClientPort

    创建侦听端口号的 TCP/IP 服务器

    复制命令复制代码

    创建一个名为 TCP/IP 服务器,该服务器侦听所有 IP 地址和端口 4000 上的连接。t

    t = tcpserver(4000)
    t = 
      TCPServer with properties:
    
            ServerAddress: "::"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    、 和 属性的值指示 TCP/IP 客户端未连接到服务器。Connected ClientAddress ClientPort

    创建 TCP/IP 服务器并设置超时期限

    复制命令复制代码

    创建调用的 TCP/IP 服务器,并将读写超时期限设置为 20 秒。t

    t = tcpserver(4000,"Timeout",20)
    t = 
      TCPServer with properties:
    
            ServerAddress: "::"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    显示 的值。Timeout

    t.Timeout
    ans = 20
    
    • 1
    • 2

    输出显示指定的超时值,指示等待最多 20 秒才能完成读取或写入操作。t

    创建 TCP/IP 服务器并设置连接事件回调

    复制命令复制代码

    创建一个调用的回调函数,并将其另存为当前工作目录中的文件。调用此回调函数时,它会在 MATLAB 命令窗口中显示一条消息,指示连接或断开连接。您可以修改此代码以在 TCP/IP 服务器上执行读取或写入操作,而不是显示消息。connectionFcn .m

    function connectionFcn(src,~)
    if src.Connected
       disp("This message is sent by the server after accepting the client connection request.")
    else
       disp("Client has disconnected.")
    end
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建调用的 TCP/IP 服务器,并将该属性设置为回调函数的句柄。server ConnectionChangedFcn connectionFcn

    server = tcpserver("localhost",4000,"ConnectionChangedFcn",@connectionFcn)
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    创建一个 TCP/IP 客户端,调用该客户端的 IP 地址和端口号与服务器相同。client

    client = tcpclient("localhost",4000)
    client = 
      tcpclient with properties:
    
                  Address: 'localhost'
                     Port: 4000
        NumBytesAvailable: 0
    
      Show all properties, functions
    This message is sent by the server after accepting the client connection request.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    创建客户端后,它将连接到服务器。这将触发服务器的连接事件,该事件将调用回调函数。回调函数返回您在命令窗口中看到的消息。connectionFcn

    通过清除客户端来断开客户端与服务器的连接。

    clear client
    Client has disconnected.
    
    • 1
    • 2

    清除客户端会触发服务器的断开连接事件,并从回调函数返回消息。connectionFcn

    从 TCP/IP 服务器写入字符串数据

    复制命令复制代码

    创建在指定端口和 IP 地址侦听客户端连接请求的 TCP/IP 服务器。然后,将数据从服务器写入连接的客户端。

    创建侦听端口 4000 和端口 4000 上的连接的 TCP/IP 服务器。localhost

    server = tcpserver("localhost",4000)
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    使用 创建 TCP/IP 客户端以连接到服务器对象。必须指定用于创建 的相同 IP 地址和端口号。tcpclient server

    client = tcpclient("localhost",4000)
    client = 
      tcpclient with properties:
    
                  Address: 'localhost'
                     Port: 4000
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    请参见 的 、 和 属性的值。Connected ClientAddress ClientPort server

    server
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 1
            ClientAddress: "127.0.0.1"
               ClientPort: 65136
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出显示 已成功接受来自 的请求,并建立与 的连接。server client client server

    通过使用对象写入数据将数据发送到客户端。由于客户端已连接到服务器,因此此数据在客户端中可用。从对象中读取此数据。server client

    write(server,"hello world","string")
    read(client,11,"string")
    ans = 
    "hello world"
    
    • 1
    • 2
    • 3
    • 4

    读取发送到 TCP/IP 服务器的字符串数据

    复制命令复制代码

    创建在指定端口和 IP 地址侦听客户端连接请求的 TCP/IP 服务器。然后读取从连接的客户端发送到服务器的数据。

    创建侦听端口 4000 和端口 4000 上的连接的 TCP/IP 服务器。localhost

    server = tcpserver("localhost",4000)
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    使用 创建 TCP/IP 客户端以连接到服务器对象。必须指定用于创建 的相同 IP 地址和端口号。tcpclient server

    client = tcpclient("localhost",4000)
    client = 
      tcpclient with properties:
    
                  Address: 'localhost'
                     Port: 4000
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    显示 的 、 和 属性的值。Connected ClientAddress ClientPort server

    server
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 1
            ClientAddress: "127.0.0.1"
               ClientPort: 65440
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出显示 已成功接受来自 的请求,并建立与 的连接。server client client server

    将数据写入 TCP/IP 客户端。由于客户端已连接到服务器,因此此数据在服务器中可用。使用对象读取字符串数据的前五个值。server

    write(client,"helloworld","string")
    read(server,5,"string")
    ans = 
    "hello"
    
    • 1
    • 2
    • 3
    • 4

    如果再读取五个值,则会收到剩余的字符串数据。

    read(server,5,"string")
    ans = 
    "world"
    
    • 1
    • 2
    • 3
  • 相关阅读:
    DRF分页器(Django Restful Framework)
    javascript存储对象
    算法通过村第八关-树(深度优先)白银笔记|深度和高度问题
    华硕电脑怎么恢复删除的文件?有5种可以选择的方案
    【LeetCode】67. 二进制求和
    FPGA之旅设计99例之第十例-----串口上位机模拟OLED屏
    docker常用命令
    【零基础学Python】Day3 Python基本数据类型之Number
    【计算机网络】习题(三)—— 数据链路层
    虹科活动 | SWCF 2022卫星通信与仿真测试线上研讨会倒计时,快来报名吧!
  • 原文地址:https://blog.csdn.net/weixin_47370211/article/details/126239901