2010-11-23 18 views
1

誰でも私にrecvの例を教えてもらえますか?epoll edge-triggeredモードのnonblockingソケットですか?私はいくつかの問題があるので尋ねる。 EPOLLETセットアップ用recv from edge-triggered mode

答えて

0

manページには、持っている:エッジトリガとしてepollを使用する

の提案方法(EPOLLET)インタフェースは以下の通りです、とフォローを回避することが可能と落とし穴。

i 
with non-blocking file descriptors 
ii 
by going to wait for an event only after read(2) or write(2) 
return EAGAIN 

編集: あなたがxバイト未満を受信するまで、あなたはまた、バイトのx個のために)((RECVを呼び出す)、または読み取ることができます。

これを行わないと、データがソケットバッファーに残っていて、ソケット上のETアクティビティーが妨げられてしまいます。

あなたはどんな問題を抱えていますか?

+0

参照:HTTP://linux.die.net/man/4/epollコード例 –

+0

iについては、非ブロッキングソケットでそれを使用するとEAGAIN、例えばながら読み取る: は{N = RECV(靴下、TEMPを行います、sizeof(temp)、0); } while(errno == EAGAIN); しかし、時にはプログラムが不定期ループに入り込み、errno == ENOTCONN – milo

+0

あなたは:errno = 0; do(recr here!)while(errno!= EAGAIN) –