延长streambuf

时间:2016-06-28 19:37:39

标签: c++ sockets

我正在使用POSIX套接字和文件描述符在C ++中实现面向对象的套接字接口。 我的问题是当我从istream(我将其子类化为fdistream)中读取字节时,在我断开套接字之前它不会返回数据。

还等什么?它是否在等待换行,即使我将其视为二进制流? 我需要在客户端发送字节后立即获取该字节。 (尝试使用Java)。

underflow()实施:

fdinbuf::int_type fdinbuf::underflow () {

    if (gptr() < egptr()) {
        return traits_type::to_int_type(*gptr());
    }

    int numPutback;
    numPutback = (int)(gptr() - eback());
    if (numPutback > pbSize) {
        numPutback = pbSize;
    }

    memmove(buffer+(pbSize-numPutback), gptr()-numPutback, numPutback);

    int num;
    num = (int)read (fd, buffer+pbSize, bufSize);
    if (num <= 0) {
        return EOF;
    }

    setg (buffer+(pbSize-numPutback),
          buffer+pbSize,
          buffer+pbSize+num);

    return traits_type::to_int_type(*gptr());
}

0 个答案:

没有答案