MATLAB无法在两个MATLAB会话之间创建连接

时间:2015-02-18 14:15:45

标签: matlab session network-programming tcp-ip

我是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);

2 个答案:

答案 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

干杯!