ゼロバイトを返す接続されたソケット上の()関数を読むことができますか?

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

質問

私は(その読み取りを知っている)私はソケット非ブロックにする場合を除き、ブロッキング呼び出しです。だから私は、正の値を返す必要があり、データの4K(バイトなしで読み)を要求()の呼び出しエラーの場合は-1(クライアントなどによって可能な接続リセット)を読んで期待しています。私の質問は次のとおりです。あらゆる機会に()の戻り、「0」を読んですることはできますか?

私は、読み取り()をこのように扱ういます:

   if ((readval = read(acceptfd, buf, sizeof(buf) - 1)) < 0)
    {

    }
    else
    {
       buf[readval] = 0;
       //Do some thing with data  
    }

このコード爆弾を読んでいる場合()は0を返し、私はそれを修正する方法を知っています。しかし、それは)(読み取り可能であるゼロを返すには?

役に立ちましたか?

解決

TCP接続は反対側のリターンに片面読み取り()で閉じられているとき0バイト

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