MatlabTCP/ip套接字有时只起作用

MatlabTCP/ip套接字有时只起作用,matlab,sockets,tcp,Matlab,Sockets,Tcp,我对Matlab是新手,正在尝试使用一个简单的tcp/ip套接字连接。我有两个简单的函数: function y = hello_socket %codegen %socket practice %open socket t = tcpip('0.0.0.0', 30001, 'NetworkRole', 'server'); %wait for connection fopen(t) disp('BP-pre read') data =

我对Matlab是新手,正在尝试使用一个简单的tcp/ip套接字连接。我有两个简单的函数:

function y = hello_socket %codegen
    %socket practice
    %open socket
    t = tcpip('0.0.0.0', 30001, 'NetworkRole', 'server');
    %wait for connection
    fopen(t)
    disp('BP-pre read')
    data = fread(t, 1);
    disp('BP-post read')
    %fclose(t);
    disp(data)
end
它创建一个服务器套接字,等待连接,然后读取1字节的数据。以及:

function y = hello_socket_client %codegen
    %client practice
    data = sin(1:64);
    t = tcpip('localhost', 30001, 'NetworkRole', 'client');
    fopen(t);
    fwrite(t, 5);
    fclose(t);

end
它创建一个客户端套接字,连接并发送数字5

我先运行服务器,然后运行客户端。现在,有时这会起作用,服务器会打印出5。其他时候不会,服务器会给出这样的警告:“警告:读取不成功:在超时期间未返回指定数量的数据。”即使两次运行之间的代码相同

为什么这只是偶尔起作用?有没有更好的方法可以做到这一点

编辑:当我在命令窗口中手动执行客户机函数时,这段代码起作用,这让我觉得发生了一些同步错误。可能在打开套接字和写入套接字之间需要暂停?

在打开套接字之后和写入之前添加一个暂停(1)命令似乎可以解决这个问题。这对我来说似乎不是一个好的做法,所以任何其他的答案都是非常感谢的