2016-03-23 8 views
1

私は現在、PythonのsocketServerモジュールを使用してソケットサーバーを実装しています。私は、クライアントが特定のタスクを実行するためにサーバーにどのような信号を送るのかを理解するために苦労しています。クライアントの入力に基づいて、サーバーはどのように異なるタスクを実行しますか?

わかりますように、私はこの分野の初心者です。しかし、私は多くのチュートリアルを見てきましたが、これらはサーバーでの特異なタスクの実行方法を教えてくれるだけです。クライアントからのメッセージを変更してそれを送り返す。

私が知りたいことは、クライアントがさまざまな種類のタスクを実行するためにサーバーと通信する方法があることです。

この問題の標準的なアプローチはありますか?

私は正しいタイプのサーバーを使用していますか?

私は、クライアントから何らかの形でメッセージを渡して、実行する必要のあるタスクをサーバーに伝えることを考えていました。

答えて

1

私は、クライアントから何らかの形式のメッセージを渡して、実行すべきタスクをサーバーに伝えることを考えていました。

これはまさにあなたが必要とするアプリケーションプロトコルです。

ソケット(ストリーミングインターネットソケットまたはTCPを想定)は、バイトストリームです。これらのバイトに意味を与えるには、どのバイト(またはそのシーケンス)が何を意味するかを決定するプロトコルが必要です。

このようなソケットが提供するストリームには、「メッセージ」という概念はありません。それで、あるパーティが "HELLO"と "BYE"を送信すると、すべてがストリームに連結されます: "HELLOBYE"。あるいは、さらに悪いことに、あなたのサーバーは最初に "HELL"を受信し、続いて "OBYE"を受信します。

メッセージフレーミングが必要な場合、またはメッセージの開始と終了の解釈方法を規定しています。

通常、独自のアプリケーションプロトコルを作成する必要はありません。通常、HTTPや他の既存のプロトコルを利用してメッセージを渡します。

+0

したがって、サーバーはソケットに応じてタスクを実行する必要がありますか? –

+0

迅速な返信をありがとう!これははるかに理にかなっている –

関連する問題