1

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

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

那么我可以在这里做什么?通过 MEX 文件执行此操作可能是可能的,但我将其作为最后的手段。udp我也坚持使用 R2009b,所以我在 Matlab 中没有命令。

4

2 回答 2

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
于 2013-01-16T13:30:34.813 回答
1

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

于 2013-01-16T20:39:30.260 回答