通过 TCP/IP 接口写入和读取数据
写入数据
write
函数以同步方式将数据写入与 tcpclient
对象连接的远程主机。首先指定数据,然后写入该数据。此函数一直等到指定数量的值写入远程主机。
在此示例中,tcpclient
对象 t
已存在。
% Create a variable called data data = 1:10; % Write the data to the object t write(t, data)
注意
对于任何读写操作,该数据类型将转换为 uint8
以便传输数据。如果指定了其他数据类型,则可以将其重新转换为所设置的数据类型。
读取数据
read
函数以同步方式从连接到 tcpclient
对象的远程主机读取数据和返回数据。有三个读取选项:
读取所有可用字节(无参数)。
(可选)指定要读取的字节数。
(可选)指定数据类型。
如果未指定大小,则默认读取将使用 BytesAvailable
属性值,该值等于输入缓冲区中可用的字节数。
在这些示例中,tcpclient
对象 t
已存在。
% Read all bytes available. read(t) % Specify the number of bytes to read, 5 in this case. read(t,5) % Specify the number of bytes to read, 10, and the data type, double. read(t,10,"double")
注意
对于任何读写操作,该数据类型将转换为 uint8
以便传输数据。如果指定了其他数据类型,则可以将其重新转换为所设置的数据类型。
从气象站服务器获取数据
TCP/IP 通信的主要用途之一是从服务器获取数据。此示例显示如何从远程气象站获取数据并对数据绘图。
注意
此示例中的 IP 地址不是工作 IP 地址。该示例显示如何连接到远程服务器。请使用您要与之通信的服务器的 IP 地址或主机名替换此处所示的地址。
使用此处显示的地址和端口
1045
创建tcpclient
对象。t = tcpclient("172.28.154.231",1045)
t = tcpclient with properties: Address: '172.28.154.231' Port: 1045 NumBytesAvailable: 0 Show all properties, functions
使用
read
函数获取数据。对于来自三个传感器(温度、压力和湿度)的 10 个样本,指定要读取的字节数为30
。将数据类型指定为double
。data = read(t,30,"double");
将 1×30 数据重构为 10×3 数据,各用一列来显示温度、压力和湿度。
data = reshape(data,[3,10]);
绘制温度图。
subplot(311); plot(data(:,1));
绘制压力图。
subplot(312); plot(data(:,2));
绘制湿度图。
subplot(313); plot(data(:,3));
通过清除 TCP/IP 客户端对象关闭该对象与远程主机之间的连接。
clear t
从网站读取网页
在此示例中,您使用 TCP/IP 对象从 RFC Editor 网站读取一个网页。
创建一个 TCP/IP 对象。端口
80
是 Web 服务器的标准端口。t = tcpclient("www.rfc-editor.org",80);
设置 TCP/IP 对象的
Terminator
属性。configureTerminator(t,"LF","CR/LF");
您现在可以使用
writeline
和readline
函数与服务器通信。若要求 Web 服务器发送网页,请使用
GET
命令。您可以使用'GET
从 RFC Editor 网站获取文本文件。(path/filename)
'writeline(t,"GET /rfc/rfc793.txt");
服务器接收命令并发回网页。您可以通过查看对象的
NumBytesAvailable
属性来查看是否发回了数据。t.NumBytesAvailable
现在您可以开始读取网页数据。默认情况下,
readline
一次读取一行。您可以读取多行数据,直到NumBytesAvailable
值为 0。请注意,您看不到生成的网页;HTML 文件数据仅在屏幕上滚动显示。while (t.NumBytesAvailable > 0) A = readline(t) end
如果您要进行更多通信,可以继续读写数据。如果您不再使用该对象,请清除它。
clear t