我是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。
为什么这有时只能起作用?有没有更好的方法来做到这一点?
编辑:当我在命令窗口中手动执行客户端功能时,此代码有效,这使我认为发生了一些同步错误。也许在打开套接字和写入套接字之间需要暂停一下?
答案 0 :(得分:1)
在打开之后和写入之前添加pause(1)命令似乎可以修复它。这对我来说似乎不是一个好习惯,所以任何其他答案仍然受到赞赏。