Тайм-аут набора для winsock recvfrom

Я настоятельно рекомендовал бы SVN с клиентом TortiseSVN и Визуальным-SVN дополнением для разработчиков, использующих Visual Studio.

16
задан Cory Carlson 1 December 2009 в 21:34
поделиться

2 ответа

Я изучил функцию выбора и, как Лаура сказала, что должен сделать, и заставил ее работать очень легко! Спасибо!

fd_set fds ;
int n ;
struct timeval tv ;

// Set up the file descriptor set.
FD_ZERO(&fds) ;
FD_SET(mHandle, &fds) ;

// Set up the struct timeval for the timeout.
tv.tv_sec = 10 ;
tv.tv_usec = 0 ;

// Wait until timeout or data received.
n = select ( mHandle, &fds, NULL, NULL, &tv ) ;
if ( n == 0)
{ 
  printf("Timeout..\n");
  return 0 ;
}
else if( n == -1 )
{
  printf("Error..\n");
  return 1;   
}

int length = sizeof(remoteAddr);

recvfrom(mHandle, buffer, 1024, 0, (SOCKADDR*)&remoteAddr, &length); 
24
ответ дан 30 November 2019 в 15:38
поделиться

Я предполагаю Windows по вызову WSASocket (). В таком случае вы неправильно передаете тайм-аут.

MSDN говорит, что SO_RCVTIMEO принимает параметр int, который указывает тайм-аут в мс.

1
ответ дан 30 November 2019 в 15:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: