Matlab tcp / ip socket有时只能工作

时间:2015-07-15 16:25:21

标签: 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 = 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.其他时间没有,服务器给出:“警告:读取不成功:超时期限内未返回指定数量的数据。”即使代码在2次运行之间是IDENTICLE。

为什么这有时只能起作用?有没有更好的方法来做到这一点?

编辑:当我在命令窗口中手动执行客户端功能时,此代码有效,这使我认为发生了一些同步错误。也许在打开套接字和写入套接字之间需要暂停一下?

1 个答案:

答案 0 :(得分:1)

在打开之后和写入之前添加pause(1)命令似乎可以修复它。这对我来说似乎不是一个好习惯,所以任何其他答案仍然受到赞赏。