同一网络上2台计算机之间的TCP / IP Matlab

时间:2013-02-20 21:55:32

标签: matlab networking tcp

我正在尝试使用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

感谢任何帮助。

1 个答案:

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