Exemplo n.º 1
0
int BSckGetChar(BSOCK_HANDLE hBSock, int iTimeout)
{
    BuffSocketData *pBSD = (BuffSocketData *) hBSock;

    if ((pBSD->iBytesInBuffer == 0) && (BSckFetchData(pBSD, iTimeout) <= 0))
        return BSOCK_EOF;

    int iChar = pBSD->pszBuffer[pBSD->iReadIndex];

    pBSD->iReadIndex = INext(pBSD->iReadIndex, pBSD->iBufferSize);
    --pBSD->iBytesInBuffer;

    return iChar;
}
Exemplo n.º 2
0
////////////////////////////////////////////////////////////////////////////////
//	函数名:INT BSDGetChar( DWORD dwTimeout /*= DEFAULT_RECV_TIMEOUT*/ )
//	用  途:从缓冲区读取一个字符
//	对全局变量的影响:无
//	参  数:
//		dwTimeout : 接收超时
//	返回值:INT,一个字符(错误时返回INVALID_CHAR)
////////////////////////////////////////////////////////////////////////////////
INT CBufSocket::BSDGetChar(DWORD dwTimeout /*= DEFAULT_RECV_TIMEOUT*/)
{
    if (m_pBSD == NULL)
        return (INVALID_CHAR);

    if ((m_pBSD->nBytesInBuffer == 0) && (BSDReadData(dwTimeout) <= 0))
        return (INVALID_CHAR);

    INT nChar =( (INT) m_pBSD->pszBuffer[m_pBSD->nReadIndex]) & 0x000000ff;

    m_pBSD->nReadIndex = INext(m_pBSD->nReadIndex, m_pBSD->nBufferSize);

    --m_pBSD->nBytesInBuffer;

    return (nChar);
}