我是MATLAB的新手,正在参与我的工程最后一年项目。我想创建一个TCP / IP会话,我在服务器会话和客户端会话之间发送数据。
我的服务器会话的代码:
data = (1:10);
t = tcpip('localhost', 30000, 'NetworkRole', 'server');
fopen(t);
fwrite(t, data);
我的客户会话的代码:
t = tcpip('0.0.0.0', 30000, 'NetworkRole', 'client');
fopen(t);
data = fread(t, t.BytesAvailable);
disp(data);
我打开了两个MATLAB Windows,然后运行它们,首先是服务器。服务器程序一直运行,没有连接到客户端:
>> tcpserver
客户端程序发出错误:
>> tcpclient
Error using icinterface/fread (line 163)
SIZE must be greater than 0.
Error in tcpclient (line 3)
data = fread(t, t.BytesAvailable);
答案 0 :(得分:2)
你的IP地址错误。你需要
t = tcpip('0.0.0.0', 30000, 'NetworkRole', 'server');
在服务器端MATLAB实例上
t = tcpip('localhost', 30000, 'NetworkRole', 'client');
在客户端上。
答案 1 :(得分:0)
最后我找到了原因。这是由于同步问题。客户端和服务器并没有相互等待。 服务器代码:
data=(1:10);
t = tcpip('0.0.0.0', 30000, 'NetworkRole', 'server');
fopen(t);
pause(1);
fwrite(t, data);
客户代码:
t = tcpip('localhost', 30000, 'NetworkRole', 'client');
fopen(t);
while t.BytesAvailable == 0
pause(1)
end
data = fread(t, t.BytesAvailable);
disp(data);
fclose(t);
delete(t);
clear t;
服务器响应:
>> tcpserver
客户响应:
>> tcpclient
1
2
3
4
5
6
7
8
9
10
干杯!