【发布时间】:2015-05-12 04:46:05
【问题描述】:
我正在 Unity3D 中构建一个游戏,它与 Matlab 中的一些代码集成。我正在寻找一台计算机上从 Unity3D 到 Matlab 的单向通信通道。
消息是一个短字符串。
这些消息的频率非常低。
示例:
我在 Unity3D 中开始我的游戏。
一开始,Unity3D 向 Matlab 发送
'message1'30 秒后 Unity3D 向 Matlab 发送
'message2'30 秒后 Unity3D 向 Matlab 发送
'message3'
我知道我的编程知识还不够先进,无法独自完成这项工作。我一直在做大量的研究,需要关于我应该专注于什么方面的建议。我不需要任何类型的身份验证协议,因为我只使用一台计算机。
根据我上面的描述,您认为我应该使用哪种 IPC 以及为什么?我需要一个方向来确定我的工作重点在哪里,因为我不是很先进。
DLL 在两个进程之间共享内存
TCP 套接字
UDP 套接字(在我的情况下与 TCP 套接字有什么区别?)
(我不能使用命名管道,因为 Unity3D 不支持它。)
【问题讨论】:
-
频率这么低,为什么不用文件呢?
-
从 matlab 检测到新消息的时间有多重要? Matlab 是否必须立即或几秒钟后做某事?
-
我需要立即进行时间检测。不到1秒。我不希望用户感到延迟。文件写入/读取可以做到吗?
-
对于 Windows 上的单向通讯,有 a million ways。啊,好的,九种方法。原始文件访问(未在此处列出,因为它可能很不稳定)可能是最容易掌握的。在 Unity 中,使用您的消息编写一个临时文件,将其关闭,然后将其重命名为已知名称。在 Matlab 中,轮询命名文件的存在,如果需要,可以同时做其他工作。当文件出现时,阅读它,操作它,然后删除它。 YMMV,它有点依赖于 FS 上的缓存。如果您想要一个更优雅的解决方案,我可能会为此考虑 UDP(套接字)。
标签: matlab dll ipc shared-memory named-pipes