基本的なマッチメイキング サーバーを開発しています。基本的なプロセスは次のようになります。
- クライアントはサーバーに接続し、クライアントの名前と探している一致の種類を報告します
- サーバーは可能なすべての一致を報告します
- クライアントは、ペアにしたい試合を選択します
- サーバーは 2 つのクライアントに一致します
問題は、クライアントが接続するたびに、この新しいクライアントと一致する可能性のあるすべてのクライアントに報告し、その新しい接続クライアントに可能なすべての一致を報告する必要があることです (したがって、一致しないクライアントは常にrecvサーバーからの準備ができている必要があります)。同時に、クライアントはいつでも一致を選択するか、切断することができます (したがって、クライアントは常に準備ができてsendおり、サーバーは準備ができている必要がありますrecv) 。
この問題の本当の解決策は、recvスレッド、クライアントとサーバーのバックグラウンド スレッド、およびメインのユーザー対話sendスレッドを使用することだと思います。
したがって、これに関連して2つの質問があります。
- 異なるスレッドで同時に同じソケット接続に保存さ
sendれますか?recv - これはこれを処理する正しい方法ですか?
(サーバーは C++ で構築され、クライアントは obj-c であるため、C++ および obj-c としてタグ付けされています)