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; }
//////////////////////////////////////////////////////////////////////////////// // 函数名: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); }