MATLAB的TCP/IP通信实践

非常简单的TCP/IP通信尝试,因为电脑只有一台,就只是试了一下本地通信,有机会试了远程主机通信,再来补充。

  1. 首先,建立服务器,代码如下:
t_server=tcpip('0.0.0.0',30000,'NetworkRole','server');%与第一个请求连接的客户机建立连接,端口号为30000,类型为服务器。
fopen(t_server);%打开服务器,直到建立一个TCP连接才返回;
try_times=100;%尝试读取缓冲区数据的次数,可随意设置;
for i=1:try_times
    pause(0.02);%每次读取之前等待0.02s,随意设置
    try     %因为fread()在缓冲区没有数据的时候读取会报错,因此用try—catch语句忽略这种错误,直到读取到数据。
        data_recv=fread(t_server,t_server.BytesAvailable);%从缓冲区读取数字数据
        %%%%%%%%% data_recv=fscanf(t_server); %接收文本数据
    catch
        t_server.ValuesReceived%查看读取出的数据数量,如果没有读到,返回0;
    end
end
  1. 其次,建立客户机,代码如下:
t_client=tcpip('localhost',30000,'NetworkRole','client');%与本地主机建立连接,端口号为30000,作为客户机连接。
fopen(t_client);%与一个服务器建立连接,直到建立完成返回,否则报错。
data_send=sin(1:64);%发送的数字数据。
%%%%%%%% txt_send='HELLO'; %发送的文本数据
pause(1);%等待连接稳定,随意设置。
fwrite(t_client,data_send);%写入数字数据
%%%%%%%% fprintf(t_client,txt_send);%发送文本数据
  1. 两段代码分别放入不同的文件,打开两个matlab界面,首先运行服务器的代码,然后运行客户机的代码,就可以顺利完成通信了,如下图所示:MATLAB实现TCP/IP的简单通信
  2. fwrite()和fread()函数可以传递数值数据,fprintf()与fscanf()函数可以传递文本数据,代码中也有说明,很容易转换。
  3. 这样就实现了简单的TCP/IP的客户机–服务器通信,大家有问题或者建议,随时提出来,我会进行进一步改进或者解答,反正为了交流促进!

相关文章: