打印

MATLAB的TCP/IP通信

[复制链接]
2942|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaoyang9992006|  楼主 | 2018-1-22 22:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

tcpclient

创建 TCP/IP 客户端对象以通过 TCP/IP 进行通信全页折叠
语法
t = tcpclient('Address',Port)
t = tcpclient('Address',Port,'Timeout',<timeout_value>)
t = tcpclient('Address',Port,'ConnectTimeout',<connect_timeout_value>)
说明
示例
t = tcpclient('Address',Port) 构造一个与远程主机 Address 和远程端口值 Port 相关联的 TCP/IP 对象 t。地址可以为远程主机名称或远程 IP 地址。端口必须为介于 1 和 65535 之间的正整数。
如果指定的地址或端口无效,或者无法建立与服务器的连接,则不会创建该对象。
示例
t = tcpclient('Address',Port,'Timeout',<timeout_value>) 会额外设置一个超时值。Timeout 属性以秒为单位指定完成读写操作的等待时间,默认为 10。
示例
t = tcpclient('Address',Port,'ConnectTimeout',<connect_timeout_value>) 会额外设置一个连接超时值。ConnectTimeout 属性指定等待对指定远程主机的连接请求是成功还是失败的最长时间(以秒为单位)。默认值为 Inf。
示例
全部折叠
使用主机名称创建对象
使用所示的主机地址和端口 80 创建 TCP/IP 对象 t。

t = tcpclient('www.mathworks.com', 80)
t =

   tcpclient with properties:

          Address: 'www.mathworks.com'
             Port: 80
          Timeout: 10
   BytesAvailable: 0
   ConnectTimeout: Inf
注意

使用主机名(如指定的 Web 地址或 'localhost')连接时,IP 地址默认为 IPv6 格式。如果您要连接的服务器需要 IPv4 格式,连接将失败。如果出现这种情况,您可以通过指定显式 IP 地址而不是主机名来进行连接。
使用 IP 地址创建对象
使用所示的 IP 地址和端口 4012 创建 TCP/IP 对象 t。

t = tcpclient('172.28.154.231', 4012)
t =

   tcpclient with properties:

          Address: '172.28.154.231'
             Port: 4012
          Timeout: 10
   BytesAvailable: 0
   ConnectTimeout: Inf
创建对象并设置超时属性
创建 TCP/IP 对象 t,并将 Timeout 增加到 20 秒。

t = tcpclient('172.28.154.231', 4012, 'Timeout', 20)
t =

   tcpclient with properties:

          Address: '172.28.154.231'
             Port: 4012
          Timeout: 20
   BytesAvailable: 0
   ConnectTimeout: Inf
输出会反映 Timeout 属性更改。
创建对象并设置连接超时属性
创建 TCP/IP 对象 t,并将 ConnectTimeout 设置为 30 秒。

t = tcpclient('172.28.154.231', 4012, 'ConnectTimeout', 30)
t =

   tcpclient with properties:

          Address: '172.28.154.231'
             Port: 4012
          Timeout: 10
   BytesAvailable: 0
   ConnectTimeout: 30
输出会反映 ConnectTimeout 属性更改。
输入参数
全部折叠
Address - 要连接的远程主机名称或 IP 地址
字符矢量
要连接的远程主机名称或 IP 地址,指定为字符矢量。在创建 tcpclient 对象时将地址指定为第一个参数。

示例:t = tcpclient('www.mathworks.com', 4012)

数据类型:char
Port - 要连接的远程主机端口
数值标量
要连接的远程主机端口,指定为数值标量。在创建 tcpclient 对象时将端口号指定为第二个参数。Port 必须为介于 1 和 65535 之间的正整数。

示例:t = tcpclient('www.mathworks.com', 4012)

数据类型:double
名称-值对组参数
指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在单引号 (' ') 中。您可采用任意顺序指定多个名称和值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例:t = tcpclient('172.28.154.231', 120, 'Timeout', 15, 'ConnectTimeout', 30)
全部折叠
'Timeout' - 读/写操作的超时
10(默认) | 数值标量
读/写操作的超时,指定为以逗号分隔的对组,包含 'Timeout' 和一个 double 类型的正值。您可以在创建对象期间或在创建对象之后更改该值。

有关如何在创建对象之后更改超时值的信息,请参阅“配置 TCP/IP 通信的属性”。

示例:t = tcpclient('172.28.154.231', 4012, 'Timeout', 20)

数据类型:double
'ConnectTimeout' - 远程主机连接超时值
Inf(默认) | 数值标量
远程主机连接超时值,指定为以逗号分隔的对组,包含 'ConnectTimeout' 和一个 double 类型的正值。该属性指定等待对指定远程主机的连接请求是成功还是失败的最长时间(以秒为单位)。您只能在对象创建过程中更改该值。

示例:t = tcpclient('172.28.154.231', 4012, 'ConnectTimeout', 30)

数据类型:double

相关帖子

沙发
gaoyang9992006|  楼主 | 2018-1-22 22:08 | 只看该作者

read

通过 TCP/IP 读取远程主机上的数据全页折叠
语法
read(t)
read(t,size)
read(t,size,datatype)
说明
示例
read(t) 从连接到远程主机的 tcpclient 对象 t 中读取所有可用数据字节并返回数据。读取的值的数目由 BytesAvailable 属性确定。
对于任何读写操作,该数据类型将转换为 uint8 以便传输数据。如果指定了其他数据类型,则可以将其重新转换为所设置的任何数据类型。
示例
read(t,size) 从连接到远程主机的 tcpclient 对象 t 中读取由 size 指定的数目的值。如果 size 大于对象的 BytesAvailable 属性,则该函数会一直等待,直到读取指定数量的数据或到达 timeout 为止。
示例
read(t,size,datatype) 从连接到远程主机的 tcpclient 对象 t 中读取具有指定精度 datatype、指定数目 size 的值。datatype 参数是标准 MATLAB® 数据类型的字符矢量。
对于任何读写操作,该数据类型将转换为 uint8 以便传输数据。如果指定了其他数据类型,则可以将其重新转换为所设置的任何数据类型。
示例
全部折叠
读取主机中的所有可用数据
使用所示的 IP 地址和端口 4012 创建一个名为 t 的 TCP/IP 对象。

t = tcpclient('172.28.154.231', 4012)
t =

   tcpclient with properties:

          Address: '172.28.154.231'
             Port: 4012
          Timeout: 10
   BytesAvailable: 0
读取所有可用的数据类型。

read(t)
如果使用不带任何参数的 read 函数,则将会从连接到远程主机的 tcpclient 对象 t 中读取所有可用数据,并返回这些数据。读取的值的数目由 BytesAvailable 属性确定,即等于输入缓冲区中可用的字节数。

通过清除 TCP/IP 客户端对象关闭该对象与远程主机之间的连接。

clear t
指定要读取的大小和数据类型
创建一个名为 t 的 TCP/IP 对象,通过端口 7 连接到 TCP/IP 回显服务器。

t = tcpclient('localhost', 7)
t =

   tcpclient with properties:

          Address: 'local host'
             Port: 7
          Timeout: 10
   BytesAvailable: 0
为变量 data 分配 10 个字节的数据。

data = (1:10)
检查数据。

whos data
Name     Size     Bytes     Class     Attributes

data     1x10        10     double
将数据写入回显服务器。

write(t, data)
检查是否使用 BytesAvailable 属性写入了数据。

t.BytesAvailable
ans =

    80
对于任何读写操作,该数据类型将转换为 uint8 以便传输数据。如果指定了其他数据类型,则可以将其重新转换为所设置的任何数据类型。由于 1 个 double 值等于 8 个 uint8 字节,因此存在 80 个可用字节。

从服务器上读取 10 个双精度值。对象名称始终是第一个参数。size 参数必须为第二个参数,datatype 必须为第三个参数。

read(t, 10, 'double')
ans =

  1    2    3    4    5    6    7    8    9    10
通过清除 TCP/IP 客户端对象关闭该对象与远程主机之间的连接。

clear t
输入参数
全部折叠
size - 要读取的字节数
数值标量
要读取的字节数,指定为数值标量。大小不能设置为 inf。如果 size 大于对象的 BytesAvailable 属性,则该函数会一直等待,直到读取指定数量的数据为止。第一个参数必须是对象名称,第二个参数是大小。size 参数为可选参数。

示例:read(t, 5)

数据类型:double
datatype - MATLAB 数据类型
'uint8'(默认) | 'int8' | 'uint16' | 'int16' | 'uint32' | 'int32' | 'uint64' | 'int64' | 'single' | 'double'
MATLAB 数据类型,指定为字符矢量。大小不能设置为 inf。datatype 必须设置为如上所示的 10 个值之一。第一个参数必须是对象名称,第二个参数是大小,第三个参数是数据类型。size 和 datatype 参数是可选的。

对于任何读写操作,该数据类型将转换为 uint8 以便传输数据。如果指定了其他数据类型,则可以将其重新转换为所设置的任何数据类型。

示例:read(t, 10, 'double')

数据类型:char

使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2018-1-22 22:09 | 只看该作者
write

通过 TCP/IP 向远程主机写入数据全页折叠
语法
write(t,data)
说明
示例
write(t,data) 从连接到远程主机的 tcpclient 对象 t 发送 N 维数据矩阵。此函数一直等到指定的值写入远程主机。
示例
全部折叠
读取并写入 uint8 数据
创建一个名为 t 的 TCP/IP 对象,通过端口 7 连接到 TCP/IP 回显服务器。这要求您让 echotcpip 服务器在端口 7 上运行。

t = tcpclient('localhost', 7)
t =

   tcpclient with properties:

          Address: 'local host'
             Port: 7
          Timeout: 10
   BytesAvailable: 0
write 函数以同步方式将数据写入与 tcpclient 对象连接的远程主机。首先指定数据,然后写入该数据。此函数一直等到指定数量的值写入远程主机。

为变量 data 分配 10 个字节的 uint8 数据。

data = uint8(1:10)
data =

  1    2    3    4    5    6    7    8    9    10
检查数据。

whos data
Name     Size     Bytes     Class     Attributes

data     1x10        10     uint8
将数据写入回显服务器。

write(t, data)
检查是否使用 BytesAvailable 属性写入了数据。

t.BytesAvailable
ans =

    10
从服务器读取数据。

read(t)
ans =

  1    2    3    4    5    6    7    8    9    10
通过清除 TCP/IP 客户端对象关闭该对象与远程主机之间的连接。

clear t
输入参数
全部折叠
data - 要写入到远程主机的数据
数值数据的 1xN 矩阵
要写入远程主机的数据,指定为 1×N 数值数据矩阵。

示例:write(t, data)

数据类型:single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

使用特权

评论回复
地板
gaoyang9992006|  楼主 | 2018-1-22 22:10 | 只看该作者
创建 TCP/IP 连接

MATLAB® TCP/IP 客户端支持从 MATLAB 连接到远程主机或硬件以读取和写入数据。典型的工作流如下:

创建到服务器或硬件的 TCP/IP 连接。
配置连接(如有必要)。
执行读取和写入操作。
清除并关闭连接。
要通过 TCP/IP 接口进行通信,首先使用 tcpclient 函数创建一个 TCP/IP 对象。语法为:

<objname> = tcpclient(Address, Port)
地址可以为远程主机名称或远程 IP 地址。无论哪种情况,Port 都必须为介于 1 和 65535 之间的正整数。

使用主机名创建对象

此示例使用所示的主机地址和 port 80 创建 TCP/IP 对象 t。

t = tcpclient('www.mathworks.com', 80)

t =

   tcpclient with properties:

          Address: 'www.mathworks.com'
             Port: 80
          Timeout: 10
   BytesAvailable: 0
   ConnectTimeout: Inf
注意

当使用主机名(例如指定的 Web 地址或 'localhost')连接时,将根据网络接口的配置解析 IP 地址。其结果可能会将地址解析为 IPv4 地址或 IPv6 地址。如果 TCP/IP 服务器只接受传入连接为某种类型的地址,例如 IPv4 地址,则在创建客户端时可能需要使用显式 IP 地址,而不是主机名。
使用 IP 地址创建对象

此示例使用所示的 IP 地址和 port 4012 创建 TCP/IP 对象 t。

t = tcpclient('172.28.154.231', 4012)

t =

   tcpclient with properties:

          Address: '172.28.154.231'
             Port: 4012
          Timeout: 10
   BytesAvailable: 0
   ConnectTimeout: Inf
设置超时属性

您可以使用名称-值对组创建对象以设置 Timeout 值。Timeout 属性以秒为单位指定完成读写操作的等待时间,默认为 10。您可以在创建对象期间或在创建对象之后更改该值。

此示例创建一个 TCP/IP 对象,但将 Timeout 增加到 20 秒。

t = tcpclient('172.28.154.231', 4012, 'Timeout', 20)

t =

   tcpclient with properties:

          Address: '172.28.154.231'
             Port: 4012
          Timeout: 20
   BytesAvailable: 0
   ConnectTimeout: Inf
输出会反映 Timeout 属性更改。

设置连接超时属性

您可以使用名称-值对组创建对象以设置 ConnectTimeout 值。ConnectTimeout 属性指定等待对指定远程主机的连接请求是成功还是失败的最长时间(以秒为单位)。该值必须大于或等于 1。如果未指定,ConnectionTimeout 的默认值为 Inf。仅可在对象创建期间更改该值。

此示例创建一个 TCP/IP 对象,但将 ConnectTimeout 指定为 10 秒。

t = tcpclient('172.28.154.231', 4012, 'ConnectTimeout', 10)

t =

   tcpclient with properties:

          Address: '172.28.154.231'
             Port: 4012
          Timeout: 10
   BytesAvailable: 0
   ConnectTimeout: 10
输出会反映 ConnectTimeout 属性更改。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1971

主题

15978

帖子

210

粉丝