我正在尝试使用Matlab中的TCP将一些数据从一台计算机发送到同一网络上的另一台计算机。
目前我已经设置了打开连接。我正在尝试模拟点对点连接,因为它们需要相互发送和接收数据。当我使用我的IPv4和IPv6运行它时,它在我的本地机器上工作正常。
%code starts in one file
openRecieve('0.0.0.0', 3000); %accept all connections
openSend('10.32.41.235',3000);
然后我在另一个文件中执行相同操作,我可以在我的机器上并行运行它们:
%code starts in other file
openSend('10.32.41.235',3000); %IPv4 of PC
openRecieve('0.0.0.0', 3000); %accept all connections
IP是伪造的......当运行2个不同的matlab实例时,此代码可在我的机器上运行。但是它在两台不同的计算机之间不起作用。
openReceive代码:
function connectionServer = openRecieve(client, port)
t = tcpip('0.0.0.0', port, 'NetworkRole', 'Server');
set(t, 'InputBufferSize', 3000000);
% Open connection to the client.
fopen(t);
fprintf('%s \n','Client Connected');
connectionServer = t;
set(connectionServer,'Timeout',.1);
end
openSend的代码:
function connectionSend = openSend(host, port)
d = tcpip(host, port, 'NetworkRole', 'Client');
set(d, 'OutputBufferSize', 3000000); % Set size of receiving buffer, if needed.
%Trying to open a connection to the server.
while(1)
try
fopen(d);
break;
catch
fprintf('%s \n','Cant find Server');
end
end
connectionSend = d;
end
感谢任何帮助。
答案 0 :(得分:2)
它现在正在运行,虽然我唯一改变的是端口号从3000和3000到3000和3001 ..........同样只使用IPv4非常关键,因为我的网络不允许的IPv6。
对于任何试图在Matlab中编写TCP代码的人,如果你不关心谁在连接,只需使用'0.0.0.0'进行连接,因为它会接受试图在该端口上连接的所有IP#。
第一个文件的当前代码:
sConec = openSend('10.234.24.124', 3000); %IPv4 Address of comp your trying to connect to
rConec = openRecieve('0.0.0.0', 3001); %Accept all connections
第二档的当前代码:
rConec = openRecieve('0.0.0.0', 3000); %Accept all connections
sConec = openSend('10.109.22.142', 3001); %IPv4 Address of computer your trying to connect to