我想在同一台机器上的Matlab脚本和Qt(C ++)应用程序之间来回通信。在Qt中,您创建一个QLocalServer
对象并指示它侦听特定句柄上的连接,例如'my_server'(可以是任何内容)。
在Matlab中,我查看了相似的MatlabCentral列表,例如this one和this one,但在任何情况下我都无法让它们工作,我甚至都没有看看如何做到这一点 - 没有能力指定句柄。如果我只是告诉他们听当地主持人,他们就不会联系。
那我该怎么办?通过MEX文件执行此操作可能是可能的,但我将其作为最后的手段。我也坚持使用R2009b,所以我在Matlab中没有udp
命令。
答案 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之后构建我需要的东西非常容易。