tcpclient
与TCP/IP服务器建立TCP/IP客户端连接
描述
一个tcpclient
对象表示MATLAB中到远程主机和远程端口的连接®读取和写入数据。远程主机可以是支持TCP/IP通信的服务器或硬件,并且必须已经存在。万博1manbetx的tcpclient
对象始终是客户端,不能用作服务器。有关创建TCP/IP服务器的信息,请参见使用TCP/IP服务器套接字通信(仪表控制工具箱).
创建
描述
创建连接并设置附加连接属性使用一个或多个名称-值对参数。设置t
= tcpclient (地址
,港口
,名称,值
)超时
,ConnectTimeout
,EnableTransferDelay
使用名称-值对参数的属性。将每个属性名用引号括起来,后跟属性值。
例子:t = tcpclient("144.212.130.17",80,"Timeout",20,"ConnectTimeout",30)
在IP地址为144.212.130.17的端口80上创建到TCP/IP服务器的TCP/IP客户端连接。它将超时时间设置为20秒,连接超时时间设置为30秒。
属性
对象创建属性
地址
- - - - - -远端主机名或IP地址
特征向量|字符串标量
远程主机名或IP地址,指定为字符向量或字符串标量。此属性只能在创建对象时设置。
例子:T = tcpclient("www.tianjin-qmedu.com",80)
创建一个TCP/IP客户端连接到www.tianjin-qmedu.com的端口80。
例子:T = tcpclient("144.212.130.17",80)
在IP地址为144.212.130.17的端口80上创建到TCP/IP服务器的TCP/IP客户端连接。
数据类型:字符
|字符串
港口
- - - - - -远端主机端口
数字
远端主机端口,取值为1 ~ 65535之间的数字(含)。此属性只能在创建对象时设置。
例子:T = tcpclient("www.tianjin-qmedu.com",80)
在www.tianjin-qmedu.com上创建一个TCP/IP客户端连接到端口4012。
数据类型:双
超时
- - - - - -允许完成操作的时间
10(默认)|数字
完成读和写操作的允许时间(以秒为单位),指定为数值。在创建对象时使用名称-值对参数设置此属性。您也可以在对象创建后使用点表示法更改它。
例子:t = tcpclient("144.212.130.17",80,"Timeout",20)
设置读写超时时间为20秒。
数据类型:双
ConnectTimeout
- - - - - -允许的时间连接到远程主机
正
(默认)|数字
允许连接到远程主机的时间(以秒为单位),指定为数值。此属性指定等待到指定远程主机的连接请求成功或失败的最大时间。此属性只能在创建对象时设置。
例子:t = tcpclient("144.212.130.17",80,"ConnectTimeout",30)
设置连接超时时间为30秒。
数据类型:双
EnableTransferDelay
- - - - - -允许服务器延迟确认
真正的
或1
(默认)|假
或0
允许服务器延迟确认,指定为逻辑真正的
或假
.此属性指示Nagle的算法对于连接是打开还是关闭。
如果此属性为真正的
,客户端收集小段未完成的数据,并在确认(ACK)从服务器到达时将它们发送到单个数据包中。将此属性设置为假
如果要立即将数据发送到网络。如果网络速度较慢,可以通过启用传输延迟来提高网络性能。然而,在快速网络中,确认很快到达,启用或禁用传输延迟之间的差异可以忽略不计。
此属性只能在创建对象时设置。
例子:t = tcpclient("144.212.130.17",80,"EnableTransferDelay",false)
禁用传输延迟。
数据类型:逻辑
读写属性
NumBytesAvailable
- - - - - -可读取的字节数
数字
此属性是只读的。
可读取的字节数,以数值形式返回。
例子:t.NumBytesAvailable
返回可读取的字节数。
数据类型:双
NumBytesWritten
- - - - - -写入远程主机的总字节数
0(默认)|数字
此属性是只读的。
写入远程主机的总字节数,以数值形式返回。
例子:t.NumBytesWritten
返回写入的字节数。
数据类型:双
ByteOrder
- - - - - -字节的顺序
“低位优先”
(默认)|“大端法”
字节排列成较大数值的顺序,指定为“低位优先”
或“大端法”
.
在读写多字节数据类型时设置此属性的值,例如uint16
,int16
,uint32
,int32
,单
,或双
.此属性的值必须与连接到的远程主机的配置匹配tcpclient
.远程主机或其他应用程序的默认字节顺序可能为big-endian,而此属性的默认值为低位优先
.
例子:t.ByteOrder = "big-endian"
设置字节顺序为大端序。
数据类型:字符
|字符串
《终结者》
- - - - - -数据终止符
“如果”
(默认)|“CR”
|“CR / LF”
|0 ~ 255
用于读写以ascii结尾的数据的终止符字符,返回为“如果”
,“CR”
,“CR / LF”
,或0 ~ 255之间的数字(含)。如果读和写终止符不同,《终结者》
返回这些值的1x2单元格数组。属性设置此属性configureTerminator
函数。
例子:configureTerminator (t,“CR”)
将读和写终止符设置为“CR”
.
例子:configureTerminator (t,“CR”,10)
将读结束符设置为“CR”
写结束符10
.
数据类型:双
|字符
|字符串
回调函数属性
BytesAvailableFcnMode
- - - - - -可用的字节回调触发模式
“关闭”
(默认)|“字节”
|“终结者”
字节可用的回调触发模式,返回为“关闭”
,“字节”
,或“终结者”
.参数指定的字节数是否触发回调,此设置确定是否关闭BytesAvailableFcnCount
,或由指定的终止符触发《终结者》
.属性设置此属性configureCallback
函数。
例子:configureCallback (t,“字节”,50岁,@callbackFcn)
设置callbackFcn
每次有50个字节的新数据可读取时触发回调。
例子:configureCallback (t,“终结者”,@callbackFcn)
设置callbackFcn
当可以读取终止符时触发的回调。
例子:“关闭”configureCallback (dev)
关闭回调。
数据类型:字符
|字符串
BytesAvailableFcnCount
- - - - - -触发回调的数据字节数
64(默认)|数字
所指定的回调所触发的数据字节数BytesAvailableFcn
,作为替身返回。此值仅在BytesAvailableFcnMode
属性是“字节”
.属性设置这些属性configureCallback
函数。
例子:configureCallback (t,“字节”,50岁,@callbackFcn)
设置callbackFcn
每次有50个字节的新数据可读取时触发回调。
数据类型:双
BytesAvailableFcn
- - - - - -由字节可用事件触发的回调函数
函数处理
由字节可用事件触发的回调函数,作为函数句柄返回。字节可用事件是通过接收一定数量的字节或终止符来生成的。在分配函数句柄之前,此属性为空。属性设置此属性configureCallback
函数。
例子:configureCallback (t,“字节”,50岁,@callbackFcn)
设置callbackFcn
每次有50个字节的新数据可读取时触发回调。
数据类型:function_handle
ErrorOccurredFcn
- - - - - -由错误事件触发的回调函数
函数处理
由错误事件触发的回调函数,作为函数句柄返回。当发生异步读或写错误时,会生成错误事件。在分配函数句柄之前,此属性为空。
例子:t. erroroccurs fcn = @myErrorFcn
数据类型:function_handle
用户数据
- - - - - -用户数据的通用属性
任何类型
用户数据的通用属性,作为任何MATLAB数据类型返回。例如,当从回调函数触发事件时,可以使用此属性存储数据。
例子:t.UserData
对象的功能
读 |
通过TCP/IP从远程主机读取数据 |
readline |
通过TCP/IP从远程主机读取ASCII字符串数据行 |
写 |
通过TCP/IP向远程主机写入数据 |
writeline |
写一行ASCII数据到远程主机通过TCP/IP |
configureTerminator |
设置通过TCP/IP与远程主机进行ASCII字符串通信的终止符 |
configureCallback |
设置通过TCP/IP与远程主机通信的回调函数和触发条件 |
冲洗 |
清除通过TCP/IP与远程主机通信的缓冲区 |
例子
使用主机名连接到TCP/IP远程主机
创建TCP/IP对象t
使用显示的主机地址和端口80
.
T = tcpclient(“www.tianjin-qmedu.com”, 80)
t = tcpclient with properties:地址:'www.tianjin-qmedu.com'端口:80 NumBytesAvailable: 0显示所有属性,函数
当您使用主机名连接时,例如指定的web地址或“localhost
, IP地址默认为IPv6格式。如果您连接的服务器使用IPv4格式,则连接失败。对于IPv4,您可以通过指定显式IP地址而不是主机名来创建连接。
使用IP地址连接到TCP/IP远程主机
创建TCP/IP客户端连接t
使用显示的IP地址和端口80
.
T = tcpclient(“144.212.130.17”, 80)
t = tcpclient with properties:地址:'144.212.130.17'端口:80 NumBytesAvailable: 0显示所有属性,函数
连接TCP/IP远端主机并设置超时时间
创建TCP/IP客户端连接t
并将超时时间设置为20秒。
T = tcpclient(“144.212.130.17”, 80,“超时”, 20)
t = tcpclient with properties:地址:'144.212.130.17'端口:80 NumBytesAvailable: 0显示所有属性,函数
Ans = 20
看到的价值超时
.
t.Timeout
输出反映了属性更改。
连接TCP/IP远端主机并设置连接超时时间
创建TCP/IP客户端连接t
并设置ConnectTimeout
属性为30秒。
T = tcpclient(“144.212.130.17”, 80,“ConnectTimeout”, 30)
t = tcpclient with properties:地址:'144.212.130.17'端口:80 NumBytesAvailable: 0显示所有属性,函数
看到的价值ConnectTimeout
.
t.ConnectTimeout
Ans = 30
输出反映了属性更改。
读写uint8远程主机数据
创建TCP/IP客户端连接t
,连接到TCP/IP回声服务器,端口为4000。要做到这一点,你必须有一个echotcpip
服务器在端口4000上运行。
echotcpip (“上”,4000) t = tcpclient(“localhost”, 4000)
t = tcpclient with properties:地址:'localhost'端口:4000 NumBytesAvailable: 0显示所有属性,函数
的写
命令功能,同步向所连接的远端主机写入数据t
.首先指定数据,然后写入数据。该函数暂停MATLAB的执行,直到将指定数量的值写入远程主机。
分配10个字节的uint8
变量的数据数据
.
数据= uint8(1:10)
data =1×10 uint8行向量1 2 3 4 5 6 7 8 9 10
查看数据。
谁数据
名称大小字节类属性data 1x10 10 uint8
向echo服务器写入数据。
写(t,数据)
操作成功后,请查看NumBytesAvailable
财产。
t.NumBytesAvailable
Ans = 10
由于客户端连接到echo服务器,因此写入服务器的数据将返回给客户端。读取所有可用的数据字节。
读(t)
ans =1×10 uint8行向量1 2 3 4 5 6 7 8 9 10
使用读
函数中读取所有可用字节的数据t
连接到远程主机并返回数据。读取的值的数量由NumBytesAvailable
属性,该属性是输入缓冲区中可用的字节数。
清除该对象,关闭TCP/IP客户端与远程主机之间的连接。关掉echotcpip
服务器。
清晰的techotcpip (“关闭”)
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
特定于平台的代码生成只支持桌面平台(Windows万博1manbetx®,macOS, Linux®)和树莓派™。
以下
tcpclient
属性不支持代码生成:万博1manbetxNumBytesAvailable
NumBytesWritten
ByteOrder
《终结者》
BytesAvailableFcnMode
BytesAvailableFcnCount
BytesAvailableFcn
ErrorOccurredFcn
用户数据
只有
地址
,港口
,超时
,ConnectTimeout
,EnableTransferDelay
都受支持万博1manbetx。以下
tcpclient
对象函数不支持代码生成:万博1manbetxreadline
readbinblock
writeline
writebinblock
writeread
configureTerminator
configureCallback
冲洗
只有读
而且写
都受支持万博1manbetx。
版本历史
在R2014b中引入
另请参阅
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。