2016-06-20 4 views
0

ソケット読み込み関数をnon-Blockingとして作成する方法はありますか?マルチスレッドのサーバーアプリケーションがあります。accept()関数をブロックしたいread()関数は非ブロッキングでなければならず、読み込むべきデータがないときはEAGAINを返すべきです。ソケット読み込み関数ノンブロッキングの作成方法

I

fcntl(sock, F_SETFL, O_NONBLOCK); 

によって読み取ら()非ブロックを作ってみましたが、それは私が一時的に利用できないエラーリソース与え始め。

+0

関数 'int socket(int domain、int type、int protocol);'はタイプとして 'O_NONBLOCK'オプションをサポートしています。あなたはそれを使ってみましたか? – Omar

+0

@Omarはい私は上記を使用しています。 –

+0

@Omar:Fresherは 'accept()'を呼び出してブロックしたいので、 'O_NONBLOCK'はリスニングソケットでは使用できません。そうであっても、 'O_NONBLOCK'は受け入れられたクライアントソケットによって継承されないので、受け入れられた後に個々のクライアントソケットで' fcntl() 'を使って適用されなければなりません。 –

答えて

1

"リソースは一時的に利用できません"EAGAINです。

正常に動作しています。

関連する問題