*************
*******************
环境:WIN10专业版,64位。 matlab 2019.
***
缺点:速度慢
×××
% 按照下面的IP地址建立一个服务端,0.0.0.0地址可以监听所有的请求的IP地址,所以就不用再写客户端的IP了
tcpip_server= tcpip('0.0.0.0',6000,'NetworkRole','server');
%%同理,接收端也要设置个缓冲区才能存下发过来的数据。
tcpip_server.InputBuffersize=10000;
%打开服务器,直到建立一个TCP连接才返回;
fopen(tcpip_server);
fwrite(tcpip_server,"com_start_ch1");
%fwrite(tcpip_server,"com_test_fs_read");%不需要回车换行
%如果收到了发过来的数据,这个就是可以读取出的数据数量,比如上面的9个数值数据,每个数据占用8个字节,则总共会有72个字节,
%那么此时这个数就是72。如果没有读到,返回0
%tcpip_server.BytesAvailable;
%读取数据。参数’tcpip_server.BytesAvailable/8‘代表着读取几个数据,
%由上文知道共有72字节的数据,那么就有72/8个数据了,全部都读取。
%data= fread(tcpip_server,tcpip_server.BytesAvailable/8,'double')
try_times=25009 ;%尝试读取缓冲区数据的次数,可随意设置;
xunhun_cishu=0;
for i=1:try_times
%pause(0.01);%每次读取之前等待0.02s,随意设置
try %因为fread()在缓冲区没有数据的时候读取会报错,因此用try—catch语句忽略这种错误,直到读取到数据。
%data_recv=fread(t_server,t_server.BytesAvailable);%从缓冲区读取数字数据
data_recv=fscanf(tcpip_server,'%s'); %接收文本数据
disp(data_recv);
xunhun_cishu=xunhun_cishu+1;
data_recv1=data_recv1+data_recv;
if data_recv=='TestFinish'
break;
else
end
catch
%tcpip_server.ValuesReceived%查看读取出的数据数量,如果没有读到,返回0;
end
end
disp(xunhun_cishu);
fclose(tcpip_server);