そこの。
サーバーをプログラムしようとしています。
サーバーはクライアントからいくつかの情報を受け取ります
そして、他のサーバーに情報を送信し、応答を受信します。
この場合、select()を使用する必要がありますか?
または、Pthreadだけでこれを行うことができます。
私のサーバーには同時に接続している多くのクライアントがあります
親切に答えてください。
ある場合は、参照できるソースコードまたはサイトを教えてください
そこの。
サーバーをプログラムしようとしています。
サーバーはクライアントからいくつかの情報を受け取ります
そして、他のサーバーに情報を送信し、応答を受信します。
この場合、select()を使用する必要がありますか?
または、Pthreadだけでこれを行うことができます。
私のサーバーには同時に接続している多くのクライアントがあります
親切に答えてください。
ある場合は、参照できるソースコードまたはサイトを教えてください
pthreadを使用してクライアントとサーバー間で通信することの意味がわかりません。私のpthreadの経験は、通信に関係のないPOSIXスレッドライブラリです。
selectの使用方法のドキュメントと例は広く入手できます。
http://support.sas.com/documentation/onlinedoc/sasc/doc750/html/lr2/select.htm http://www.lowtek.com/sockets/select.html
google...を使用して「selectc」を検索すると見つかる可能性のあるものの例です。
複数のクライアントを処理するサーバーを実装するための1つのアプローチは、クライアント接続ごとにpthreadを作成して、専用スレッドで各接続の読み取り/書き込みを行えるようにすることです。「クライアント接続ごとにpthreadがある場合でも、使用する必要がありますselect
か?」という質問のようです。
非常に単純なサーバーでは、省略できる場合がありますselect
。接続スレッドは次のようになります。
do {
read(conn, cmd);
response = process(cmd);
write(conn, response);
} while (cmd != DONE)
ただし、専用のクライアントスレッドを使用している場合でも、クライアント接続をselect
呼び出す前に、使用可能な入力を確認するために使用したい場合があります。read
たとえば、接続にアイドルタイムアウトを実装できるようにする必要がある場合は、ブロッキングを実行するだけでは不十分read
です。