2012-02-04 8 views
0

2つのクライアントから情報を取得するサーバーがあります。これらの3台のマシンは、同じローカルネットワーク上に(同じハブに接続して)居住しています。両方のクライアントは常にx、y情報をサーバーに送信します。FlashとAIRのソケットプログラミング... 2つのクライアント、1つのサーバー。 2つのポートまたは1つのポートで聞きますか?

私が優れているのアプローチを把握しようとしている:

は、1つのポートで待機

サーバーアプローチ。クライアントは同じポートに接続します。クライアント情報をデータにエンコードすることで、それぞれのデータを区別しようとします。

アプローチB

サーバは、2つのポートをリッスン。クライアントAは常に最初のポートに接続し、クライアントBは常に2番目のポートに接続します。私は、ポートに基づいて、誰が何を送ったのか知っていました。

+0

ポートは1つだけです。 このリンクから参照することができます。 http://stackoverflow.com/questions/8383977/fastest-way-to-write-to-multiple-socket-connections –

答えて

2

1つのポートを使用します。クライアントが接続すると、それは自分自身のSocketインスタンスを取得するので、いつどのクライアントデータが受信されるかを知ることができます。クライアントに2つの異なる役割がある場合、クライアントが「ちょっと!私は役割Aのクライアントです!」のように接続されているときに、単純な認証を使用します。

2

アプローチA:クライアントがソケットサーバーに接続しているときに、サーバーがIDを返してインクリメントして、両方のクライアントがIDを持つようにします。その後、データ(xとy)を送信すると、idも送信されます。

+2

私はアプローチAがBよりも優れていることに同意しますクライアントIDは必要ありません。 valyardの答えによれば、通常、同じポート上で通信するサーバー上に別々のソケットインスタンスがあります。これは、下にあるソケットシステムによって管理されます(すでにクライアントを識別するために、固有のIPが存在することに注意してください)。アプローチBは、単一のポートがそれらをすべて管理できないほど多くの接続を処理している場合にのみ考慮する必要があります。 〜64Kから予約ポートを差し引いたものです。 – mfa