0

Adobe AIR を使用してソケット サーバーをセットアップし、サーバーを使用して 2 つのクライアントが相互にメッセージを送信できるようにしようとしています (これは Android ベースのプロジェクトであるため、サーバーは PC の仲介者として機能する必要があります)。何らかの理由で、私が送信しているメッセージは、他のクライアントではなく、同じクライアントにのみ返送されています。各メッセージがどこから来たのかを特定し、反対側でそれをどのように処理するかを特定するシステムをすでにセットアップしています。

変数 'c​​onnectionNum' int は、基本的にクライアントが 0 か 1 かを表し、サーバーとの間で送受信されるデータの前には 0 か 1 のいずれかが付きます。

理想的には、すべてのメッセージの先頭に int を付けて両方にデータを送信しようとするのではなく、一度に 1 つの特定のクライアントにデータを送信する方法が必要です。

現時点では、接続する 2 番目のクライアントのメッセージのみが実際にサーバーを介して送信され、最初のクライアントは空白のメッセージを送信しますが、理由は不明です。

4

1 に答える 1

5

現時点では、接続する 2 番目のクライアントのメッセージのみが実際にサーバーを介して送信され、最初のクライアントは空白のメッセージを送信しますが、理由は不明です。

これはclientSocket、サーバー上にオブジェクトが 1 つしかなく、他の誰かが接続したときにそれを上書きしているためです。そのため、2 番目のクライアントが接続すると、最初のクライアント ソケットが失われます。サーバーを呼び出すと、最後に接続した人sendDataが常に使用されます。clientSocket

これを修正するclientSocketには、サーバー上にオブジェクトの配列が必要です。次に、メッセージを送信する正しいクライアントを選択するか、メッセージをブロードキャストする場合はすべてのクライアントにメッセージを送信します。

于 2013-04-09T18:42:46.720 に答える