Я пытаюсь узнать, сколько байтов доступно для чтения в моем TCP-сокете. Я вызываю ioctl с флагом «FIONREAD», который действительно должен дать мне это значение. Когда я вызываю функцию, я получаю return val 0 (т.е. нет ошибки), но также и мой целочисленный аргумент получает значение 0. Это не будет проблемой, но когда я вызываю метод recv (), я фактически считываю некоторые байты из сокета. Что я делаю не так?
// вот код:
char recBuffer[BUFFERLENGTH] = {0};
int bytesAv = 0;
int bytesRead = 0;
int flags = 0;
if ( ioctl (m_Socket,FIONREAD,&bytesAv) < 0 )
{
// Error
}
if ( bytesAv < 1 )
{
// No Data Available
}
bytesRead = recv(m_Socket,recBuffer,BUFFERLENGTH,flags);
Когда я вызываю функцию recv, я действительно читаю некоторые действительные данные (которые я ожидал)