【问题标题】:MATLAB unable to create connection between two MATLAB sessionsMATLAB 无法在两个 MATLAB 会话之间创建连接
【发布时间】:2015-10-31 02:02:33
【问题描述】:

我是 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 窗口并运行它们,首先是服务器。服务端程序在没有连接到客户端的情况下继续运行:

>> tcpserver

而客户端程序报错:

>> tcpclient
Error using icinterface/fread (line 163)
SIZE must be greater than 0.

Error in tcpclient (line 3)
data = fread(t, t.BytesAvailable);

【问题讨论】:

  • 您是否尝试将0.0.0.0 用于服务器,将localhost 用于客户端?对我来说,这似乎是错误的方式......
  • @dasdingonesin 谢谢!那行得通....现在我对我的真正任务有疑问....我正在创建一个新帖子。请帮帮我!

标签: matlab session network-programming tcp-ip


【解决方案1】:

您的 IP 地址弄错了。你需要

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

在您的服务器端 MATLAB 实例和

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

在客户端上。

【讨论】:

    【解决方案2】:

    终于找到原因了。这是由于同步问题。客户端和服务器没有互相等待。 服务器代码:

    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
    

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多