iChat 如何开始对话?

Posted

技术标签:

【中文标题】iChat 如何开始对话?【英文标题】:How does iChat start a conversation? 【发布时间】:2011-10-12 09:41:54 【问题描述】:

我想知道 iChat 使用哪种协议与局域网中的其他客户端开始对话? 是 SIP 吗?还是 SIP + XMPP? 开始与 SIP 的会话并与 XMPP 交换消息? 非常感谢!

【问题讨论】:

【参考方案1】:

它使用Bonjour、XMPP,但使用multicast DNS 表示存在和点对点连接而不是服务器。该协议由 Apple 设计,然后由XMPP Standards Foundation 公开记录为XEP-0174: Serverless Messaging。

【讨论】:

非常感谢,所以现在我们可以借助 jmdns(提供 DNS-SD)发现 Presence 服务,我们知道 name@host:port。但问题是如何与知道其 name@host:port 的客户端开始对话? java中有没有合适的库?像 smack(但 smack 不支持 P2P),任何用于无服务器消息传递的库?我不想对数据框进行封装。 我查看了 XEP-0174 并尝试建立与 bonjour 客户端的套接字连接,并发送字符串“【参考方案2】:

所以,我了解了 ichat 现在是如何工作的。 DSN-SD + XEP-0174. 不幸的是,XEP-0174 没有任何 java 库,但连接是基于套接字的。 感谢大家的关注。

【讨论】:

以上是关于iChat 如何开始对话?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AppleScript 在 iMessage 中开始新对话?

如何使用 AppleScript 在 iMessage 中开始新对话?

如何在 Android 中开始活动之前显示进度对话框?

通过 iChatAgent 以编程方式在 iChat 中设置状态

如何使用 Ionic (Angular) 在一个对话框中设置开始时间、结束时间和持续时间

恢复我的“com.apple.iChat”文件