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
干杯!
我是 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
干杯!