-1
私は物事をテストしていますが、非ブロック化ソケットを作成しましたが、 "fgets"が私の計画を台無しにしました。どうすればfgetsが私のwhileループをブロックするのを防ぐことができますか? これを解決するコードは非常に高く評価されます。非ブロック化ソケットがブロックされています
fcntl(clientSocket, F_SETFL, O_NONBLOCK);
while(1){
fgets(buffer,sizeof(buffer),stdin);
send(clientSocket,buffer,sizeof(buffer),0);
recv(clientSocket,buffer,sizeof(buffer),0);
printf("%s",buffer);
}
'fgets()'は 'stdin'をブロックしています。これはあなたのノンブロッキングソケットとはまったく関係ありません。 'select'と' poll'/'epoll'を見てください。 –
fgets()がブロックされなかった場合、次に何をするつもりですか?つまり、fgetsの不具合がなければ、何を送信しますか? – nos
私は入力が必要ですが、recvからの今後のメッセージをブロックしません。クライアントとサーバーの間のチャットサービスのようなものを想像してください – betelgeusee