【问题标题】:Can two apps written in different languages communicate?用不同语言编写的两个应用程序可以通信吗?
【发布时间】:2013-10-13 19:57:57
【问题描述】:

我想用 Java 编写一个移动应用程序 (Android) 并让它与 google chrome 扩展程序通信。为此,我需要使用套接字将数据发送到移动设备。这显然不能在 JavaScript 中完成,所以我查看了Native Client 编译器,它允许我使用 C(不支持 Java)来创建套接字。该应用程序需要用java编写。在这一点上,这都是理论上的,因为我不了解 C 或 Java。但是,我确实有一些编程经验,并且愿意学习这两种语言。我对套接字一点经验都没有。

我的问题是,我可以使用 C 启动一个套接字并让它使用 Java 将数据发送到应用程序吗?

【问题讨论】:

  • “在不同语言之间发送数据”?这甚至意味着什么吗?
  • 我想不出一个好的表达方式,抱歉。新标题更明智:-)。
  • 套接字两端的应用程序彼此不知道,除非您选择将该数据作为消息的一部分发送。您可以用另一种用新语言编写的应用程序替换一个应用程序,并假设它以相同的方式处理数据,一切都会继续工作。我有 Web 服务(最终只是监听套接字的软件)为用 Java、Objective C 和 C# 编写的客户端提供服务。但正如 Kerrek SB 所说,语言与它无关。

标签: java android c sockets


【解决方案1】:

有许多通信协议。正如暗示的那样,protocol 建议使用标准接口。它是保证apps written in different languages can communicate 的标准接口部分。换句话说,用任何“语言”编写的应用程序可以打包一些数据,并根据特定协议的规则发送它,可以成功地发送和/或接收来自不同程序的数据。 语言,但识别相同的协议。例如,TCP/IP 是一种协议,它允许以一种语言编写的应用程序以一种由另一种语言编写的应用程序识别的方式发送和接收字节数据。语言。它使用定义良好且文档化的通用接口(例如 IPv4 或 IPv6),并且经常用作以不同语言编写的应用程序之间的通信方法。使用 TCP/IP 协议的例程是用 C、C++、C#、Java 等语言编写的。这些语言(以及大多数其他现代语言)具有可用的库,可简化并进一步标准化在 talk TCP/IP 的应用程序中的实现。例如,套接字是(可能)在提供互联网连接的应用程序中使用的主要方法。套接字库可用于 LinuxWindows 本地语言。

【讨论】:

    【解决方案2】:

    两个用不同语言编写的应用程序可以通信吗?

    当然可以!只需以 JSON、YAML 或 XML 等通用交换格式表达通信数据,几乎可以在任何平台/语言上轻松读取。二进制数据也很好,但与它通信时您应该了解并尊重对齐和字节序等内容。

    注意:Javascript 可以使用套接字!您可以搜索术语 AJAX 以了解更多信息。

    【讨论】:

    • 当您提到 AJAX 套接字时,您的意思是这样吗? w3schools.com/ajax/ajax_xmlhttprequest_create.asp 使用它向移动应用程序发送数据是否可能或合乎逻辑?应用端需要什么样的编程?
    • 在网页上使用 AJAX 与任何服务器进行通信是非常合乎逻辑的。如果您的移动应用程序有 server 套接字,您可以连接到它并从浏览器页面与您的应用程序对话。但请注意,XMLHttpRequest 有很大的限制 - 它只允许在页面地址中的同一域内进行连接。为了克服这个限制,您可以使用 JSONP、easyXDM 库等。
    • 并且... 浏览器扩展不受同源策略(扩展JS可以查询任何域)
    【解决方案3】:

    我可以使用 C 启动套接字并让它使用 Java 将数据发送到应用程序吗?

    嗯,当然。例如,您使用的 Web 浏览器不太可能使用与您正在访问的 Web 服务器相同的编程语言编写。部分原因是双方通常都涉及多种语言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多