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

MATLAB unable to create connection between two MATLAB sessions

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

您获取的 IP 地址有误。你需要

t = tcpip('0.0.0.0', 30000, 'NetworkRole', 'server');

在您的服务器端 MATLAB 实例上和

t = tcpip('localhost', 30000, 'NetworkRole', 'client');

在客户端上。

终于找到原因了。这是由于同步问题。客户端和服务器不是在等待对方。 服务器代码:

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

干杯!