0

JSON 文字列がサーバーに送信されるときの 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 サーバーに送信していましたが、いずれの場合もサーバーは「Bad request syntax」エラーを報告しています。現在の質問を正しく理解していれば、その問題について新しい質問を書きます。

洞察力は高く評価されます。

4

1 に答える 1

1

JSONエンコーディングはRPCプロトコルの共通語であるため、実際に好きなクライアントを使用できます。JSON-RPCで見つけた実装では、TCP / IP上に構築された非常に特殊な通信プロトコルであるHTTPプロトコルを使用しますが、必要に応じて、生のTCP-IPソケットに同じプロトコルを実装できます。

例には、JavaScript、C、Lispではなく、PythonでJSON-RPC標準を実装する方法を示しているため、Pythonクライアントとサーバーの両方が含まれています。それらは1つの言語での実装に焦点を合わせています。ただし、JSON-RPC標準は言語に依存しません。同じ標準を使用している限り、サーバーとクライアントのどちらでどの言語を記述してもかまいません。

于 2012-10-13T16:05:37.000 に答える