【问题标题】:Connect to local server from Matlab从 Matlab 连接到本地服务器
【发布时间】:2013-01-16 01:33:29
【问题描述】:

我想在同一台机器上的 Matlab 脚本和 Qt (C++) 应用程序之间来回通信。在 Qt 中,您创建一个 QLocalServer 对象并指示它侦听特定句柄上的连接,例如“my_server”(可以是任何东西)。

在 Matlab 中,我查看了相关的 MatlabCentral 列表,例如 this onethis one,但在这两种情况下我都无法让它们工作,我什至不知道该怎么做这——无法指定句柄。如果我只是告诉他们收听本地主机,他们不会连接。

那么我可以在这里做什么?通过 MEX 文件执行此操作可能是可能的,但我将其作为最后的手段。另外我被 R2009b 卡住了,所以我在 Matlab 中没有udp 命令。

【问题讨论】:

标签: c++ qt matlab localserver


【解决方案1】:

试试 Peter Rydesäter 的工具箱:http://www.mathworks.com/matlabcentral/fileexchange/345-tcpudpip-toolbox-2-0-6 很旧但仍然有效。

两个 Matlab 实例的示例:

发件人:

function sendudp(host, port, data)
  udp=pnet('udpsocket',1111);          % open local socket on port 1111
  pnet(udp,'write',data);              % write data to buffer
  pnet(udp,'writepacket',host,port);   % send udp-packet
  pnet(udp,'close');                   % close connection
end

接收者:

sock = pnet('udpsocket', 950) % open socket on port 950

发件人:

sendudp('127.0.0.1', 950, 'Hello World') % Call function defined above, send Hello World to localhost, port 950

接收者:

size = pnet(sock, 'readpacket'); % Get Data from sock, and load to buffer
data = pnet(sock, 'read'); % Read Data from buffer

【讨论】:

  • 对,我已经看过了,但这是同一个故事——我如何指定句柄?据我所知,您只能输入 IP 地址或“本地主机”。但我不知道如何具体连接到我的其他进程。
【解决方案2】:

所以事实证明,Qt 的 QLocalServer/QLocalSocket 不是这样做的正确类,尽管它们的名字。相反,如果您创建QTcpServer 和相应的QTcpSocket 并在两端设置,我引用的MatlabCentral 文件(可能还有@Frederik 提到的那个,虽然我不能立即让它工作)做得很好,主机到本地主机和端口到 4444(或其他)。我发现按照 Qt 的Loopback example 构建我需要的东西非常容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    相关资源
    最近更新 更多