我儿子有一个 MacOS 9 盒子,他从基于 Leopard 的 MacBook 向其发送远程 AppleEvents。有什么方法可以通过 TCP/IP 从我的 Windows 7 Toshiba 以编程方式发送远程 AppleEvents?
问问题
416 次
3 回答
2
如果有帮助,Apple 事件会通过 TCP/UDP 在端口 3031 上发送。
从高层来看,苹果事件有四个部分:
- 数据聚合 API(数据请求被放入不透明的内存结构中)。就目前而言,这个 API 冗长且使用起来很痛苦。谢天谢地,您可以使用具有更好数据聚合工具的语言
- 转换/序列化 - 将不透明的数据结构转换为可以序列化并传输到另一个进程的东西,对于相同的机器事件,这可能是空序列化
- 传输 数据从一个进程传输到另一个进程。单台机器可能只是将数据的副本排入队列。远程机器通过网络协议进行传输,该协议可以是 TCP/IP(但它也可以与 AppleTalk 一起使用)并且可能需要身份验证。
- 反序列化/转换
您很可能需要执行步骤 2、3 和 4。如果您不关心获取任何信息,则可以跳过 4,因为已发送事件中的标志之一是“无回复”。
AE 数据模型中的类型相对较少。我会在你的 OS X 机器上编写代码来发送每种类型,并在发送数据包时对其进行逆向工程。为了加快进程,您可能希望在 OS X 机器上使用appscript,它可以让您从 Ruby、Objective C 或 Python 发送事件。
于 2009-07-08T12:48:29.573 回答
1
如果你在谈论咆哮通知,有图书馆可以使用它。例如,这里是ruby 的咆哮库
于 2009-07-08T12:23:54.937 回答
1
使用 tcpdump 或 Wireshark 之类的工具嗅探 MacBook 和 MacOS 9 机器之间的数据包。这将告诉您 AppleEvent 在网络上的样子。
然后使用您在 Windows 上选择的编程环境复制这些数据包。
我建议将您编写的代码打包到一个库中,以便在其他应用程序中重用。
祝你好运 - 这可能很棘手!
于 2009-07-08T12:16:18.130 回答