【问题标题】:Python JSON-RPC_2.0 TCP Server Client ExplainedPython JSON-RPC_2.0 TCP 服务器客户端解释
【发布时间】:2017-12-14 02:40:50
【问题描述】:

当 JSON 字符串发送到服务器时,我很难完全理解 TCP 服务器/客户端关系的性质。我需要的信息可能在那里,但我可能没有使用正确的搜索参数。

我通过以下示例构建了一个 Python TCP、JSON-RPC 服务器:

在这两种情况下,我都可以从另一台计算机上的 Python 控制台与 Python 服务器通信,将命令从一台(客户端)发送到另一台(服务器)。在所有示例中,我都必须在客户端和服务器机器上安装上述库以促进 TCP 通信。

所以我的情况和问题的背景是,JSON 什么时候进入组合?这就是我想做的:

设置一个 Python TCP 服务器,它接受来自网络内部(或外部)远程客户端的 JSON 字符串。服务器解析 JSON 字符串,从对象化字符串中获取方法和参数,并执行方法。然后,服务器将 JSON 字符串结果发送到调用客户端。在这种情况下,客户端是一个带有 JavaScript 库的移动应用程序(iPad、Android 等),我将使用该库将请求发送到服务器。

为什么我需要 Python 客户端?据我所知,客户端只需要打开与服务器的连接,然后发送 JSON 字符串,对吗?为什么所有代码​​示例都包含 Python 客户端示例?他们是否假设服务器机器将与服务器机器通信,所以他们已经包含客户端代码来帮助生成将发送到服务器的 JSON 字符串?

如果我假设任何事情都不需要 Python 客户端,我一直在从 iPad 向 Python 服务器发送 JSON 字符串,但在每种情况下,服务器都报告“请求语法错误”错误。如果我正确理解当前问题,我将就该问题提出一个新问题。

感谢您的洞察力。

【问题讨论】:

    标签: python json client tcpserver


    【解决方案1】:

    JSON 编码是您的 RPC 协议的通用语言,因此您确实可以使用任何您喜欢的客户端。您为 JSON-RPC 找到的实现使用 HTTP 协议,这是一种构建在 TCP/IP 之上的非常特殊的通信协议,但如果需要,您可以在原始 TCP-IP 套接字上实现相同的协议。

    示例包括 Python 客户端服务器,因为它们说明了如何在 Python 中实现 JSON-RPC 标准,而不是在 JavaScript、C 或 Lisp 中。他们专注于以一种语言实现。然而,JSON-RPC 标准与语言无关。不管你用什么语言编写服务器或客户端,只要它们使用相同的标准。

    【讨论】:

    • jsonrpc.org/specification "它与传输无关,因为这些概念可以在同一个进程、套接字、http 或许多不同的消息传递环境中使用。"
    • @tvorez:确实!我显然在某处做出了错误的解释; Python 的实现都是基于 XML-RPC 实现的,这肯定是与 HTTP 绑定的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2012-01-04
    • 2013-02-17
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多