GLUT:“ファイル読み取り可能”を追加する方法イベントループにフックしますか?

StackOverflow https://stackoverflow.com/questions/185033

  •  06-07-2019
  •  | 
  •  

質問

ソケットを開いて、読み取り可能なイベントをGLUTイベントループに掛けたいのですが、どうすればよいですか?ポータブルな標準GLUTコードが最適ですが、プラットフォーム固有のハッキングも受け入れています。

ありがとう!

役に立ちましたか?

解決

GLUTはこれをうまくサポートしていません。 GLUT FAQ#18

をご覧ください。

glutIdleFuncでアイドル関数を登録し、アイドル関数でソケットをポーリングして、利用可能な新しいデータがあるかどうかを確認できます。ソケットから読み取るときにブロックを回避するには、以下を呼び出してソケットを非ブロックに設定する必要があります。

#include <unistd.h>
#include <fcntl.h>
...
sockfd = socket(PF_INET, SOCK_STREAM, 0);
fcntl(sockfd, F_SETFL, O_NONBLOCK);

Beejのネットワーキングガイド

このアプローチの欠点は、ネットワークデータが着信するのを待つのではなく、アプリが1秒間に60回ソケットの状態をチェックすることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top