从Matlab连接到本地服务器

时间:2013-01-16 01:33:29

标签: c++ qt matlab localserver

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

在Matlab中,我查看了相似的MatlabCentral列表,例如this onethis one,但在任何情况下我都无法让它们工作,我甚至都没有看看如何做到这一点 - 没有能力指定句柄。如果我只是告诉他们听当地主持人,他们就不会联系。

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

2 个答案:

答案 0 :(得分:1)

试试PeterRydesä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

答案 1 :(得分:1)

事实证明,Qt的QLocalServer / QLocalSocket不是正确的类,尽管他们的名字。更确切地说,我引用的MatlabCentral文件(也可能是@Frederik提到的文件,虽然我无法立即让它工作),如果你创建一个QTcpServer和相应的QTcpSocket并设置,在两端,托管到localhost和端口到4444(或其他)。我发现在Qt Loopback example之后构建我需要的东西非常容易。