ソケットを開き、GLUT イベント ループで読み取り可能なイベントをハングアップしたいのですが...これを行う方法についてのアイデアはありますか? 移植可能な標準 GLUT コードが最適ですが、プラットフォーム固有のハックも受け入れます。
ありがとう!
ソケットを開き、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回ソケットの状態をチェックすることです。