Main Content

通过 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 地址或主机名替换此处所示的地址。

  1. 使用此处显示的地址和端口 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
    
    
  2. 使用 read 函数获取数据。对于来自三个传感器(温度、压力和湿度)的 10 个样本,指定要读取的字节数为 30。将数据类型指定为 double

    data = read(t,30,"double");
  3. 将 1×30 数据重构为 10×3 数据,各用一列来显示温度、压力和湿度。

    data = reshape(data,[3,10]);
  4. 绘制温度图。

    subplot(311);
    plot(data(:,1));
  5. 绘制压力图。

    subplot(312);
    plot(data(:,2));
  6. 绘制湿度图。

    subplot(313);
    plot(data(:,3));
  7. 通过清除 TCP/IP 客户端对象关闭该对象与远程主机之间的连接。

    clear t

从网站读取网页

在此示例中,您使用 TCP/IP 对象从 RFC Editor 网站读取一个网页。

  1. 创建一个 TCP/IP 对象。端口 80 是 Web 服务器的标准端口。

    t = tcpclient("www.rfc-editor.org",80);

    设置 TCP/IP 对象的 Terminator 属性。

    configureTerminator(t,"LF","CR/LF");
  2. 您现在可以使用 writelinereadline 函数与服务器通信。

    若要求 Web 服务器发送网页,请使用 GET 命令。您可以使用 'GET (path/filename)' 从 RFC Editor 网站获取文本文件。

    writeline(t,"GET /rfc/rfc793.txt");

    服务器接收命令并发回网页。您可以通过查看对象的 NumBytesAvailable 属性来查看是否发回了数据。

    t.NumBytesAvailable

    现在您可以开始读取网页数据。默认情况下,readline 一次读取一行。您可以读取多行数据,直到 NumBytesAvailable 值为 0。请注意,您看不到生成的网页;HTML 文件数据仅在屏幕上滚动显示。

    while (t.NumBytesAvailable > 0)
        A = readline(t)
    end
    
  3. 如果您要进行更多通信,可以继续读写数据。如果您不再使用该对象,请清除它。

    clear t

另请参阅

| | |