0

UDP サーバー アプリケーションに 2 つの機能を実装したいと考えています。

  1. 任意のクライアントからのデータを継続的に受信するスレッドを作成します。

  2. 特定の期間後にサーバーソケットでデータを継続的に送信し、クライアントからの応答を待機するスレッドを作成します。(これを実装したのは、クライアントがダウンしたときはいつでも、データがクライアントから返されず、サーバーがクライアントがダウンしていることを認識できるようにするためです。)

現在、私が直面している問題は、2 つのスレッドが接続された同じソケットを共有しているため、両方のスレッドが同時にこのソケットにアクセスしようとすると、デッドロックが発生することです。

私が見つけた解決策の 1 つは、2 つのソケットを作成することでした。1つは継続的にデータを受信し、もう1つはサーバーから時々クライアントにデータを送信して応答を待つためのソケットですが、サーバーはbind()する必要があり、ソケットをINADDR_ANYにbind()したためです一度、サーバーからデータを送信し、クライアントからの応答を待機するための別のソケットを作成するにはどうすればよいですか。

この合併症を助けてください。

また、その実装の他のより良い方法があれば教えてください。
前もって感謝します :)

4

1 に答える 1

1

You will have to use non-blocking net functions and use a mutex to ensure no two threads access the socket at once.

A single thread may, however, be enough, if you use non-blocking functions. Using many threads will probably not improve performance, but may make the code more readable.

于 2013-03-29T11:00:56.477 に答える