2012-10-13 62 views
0

我有困難的時候完全理解TCP服務器/客戶關係的性質時,JSON字符串被髮送到服務器。我需要的信息可能已經存在,但我不願意使用正確的搜索參數。Python的JSON-RPC_2.0 TCP服務器客戶端解釋

我已經建立了一個Python TCP,從下面的例子JSON-RPC服務器:

在這兩種情況下,我可以從Python服務器通信在另一臺計算機上的Python控制檯,將命令從一個(客戶端)發送到另一個(服務器)。在所有例子中,我不得不在客戶機和服務器機器上安裝上面提到的庫,以便於TCP通信。

所以後臺我的情況和問題是,什麼時候JSON進入組合?這就是我想做的事:

設置接受來自遠程客戶端的內部(或外部)網絡JSON字符串一個Python TCP服務器。服務器解析JSON字符串,從對象字符串中提取方法和參數,並執行該方法。然後服務器將JSON字符串結果發送給調用客戶端。在這種情況下,客戶端是一個帶有JavaScript庫的移動應用程序(iPad,Android等),我將使用它來將請求發送到服務器。

爲什麼我需要一個Python客戶端?從我可以收集的內容來看,客戶端只需要打開一個到服務器的連接,然後發送JSON字符串,對吧?爲什麼所有代碼​​示例都包含Python客戶端示例?他們是否假設服務器計算機正在與服務器計算機通話,所以它們包含客戶端代碼以幫助生成將發送到服務器的JSON字符串?

如果我認爲是不是真的需要任何一個Python客戶端,我已經發送JSON字符串從iPad Python的服務器,但在每種情況下服務器報告「錯誤的請求語法」錯誤。如果我正確理解當前問題,我會在這個問題上提出一個新問題。

洞察力是讚賞。

回答

1

的JSON編碼是您的RPC協議用得上,所以你的確可以使用任何你喜歡的客戶端。您爲JSON-RPC找到的實現使用HTTP協議,這是一種基於TCP/IP構建的非常具體的通信協議,但如果需要,您可以在原始TCP-IP套接字上實現相同的協議。

這些示例包括Python客戶端服務器,因爲它們說明了如何在Python中實現JSON-RPC標準,而不是在JavaScript或C或Lisp中實現。他們專注於一種語言的實施。但是,JSON-RPC標準是語言不可知的。只要他們使用相同的標準,無論服務器還是客戶端使用哪種語言都無關緊要。

+0

謝謝,我的男人。這就是我所希望的。 – Derrick

+0

http://www.jsonrpc.org/specification「它是傳輸不可知的,因爲這些概念可以在同一個進程中,在套接字上,在http上或許多不同的消息傳遞環境中使用。」 – tvorez

+0

@tvorez:的確如此!我顯然在某個地方做了一個錯誤的解釋; Python的實現都是基於XML-RPC實現的,這個實現肯定與HTTP綁定在一起。 –