このMSDN の記事を少し変更したバージョンを実行している非同期サーバーがあります。これにより、一度に 1 つのクライアントのみが参加できます。
私の質問は、トランザクションごとにソケットを開いたり閉じたりしても大丈夫ですか (TCP を使用します)。(より多くのクライアントをリッスンするコードを変更することによって) 複数のクライアントが参加できるようにすると、一部のメッセージが相互接続されているように見えます。たとえば、2 つのクライアントからサーバーからファイルをダウンロードしようとすると、最後に起動したクライアントがファイルを取得し、最初のクライアントがタイムアウトします。または、あるクライアントからデータの送信を開始し、別のクライアントから開始すると、サーバーは両方のデータを組み合わせて受信しました。
私のプログラムは (ゲームのように) 高いパフォーマンスを必要としないため、トランザクションごとのソケットの開閉に問題はありますか? または、複数のクライアントを処理するためのより良い方法はありますか?
編集 - リスナー自体は存続期間中開いたままになることを忘れていましたが、各クライアントはトランザクション自体のために新しいソケットを開いたり閉じたりします。MSDN リンクのコードでは、変数は「handler」です。