Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.146.105.137] |
|
Сообщ.
#1
,
|
|
|
Странное поведение данной опции.
если я выставляю struct timeval tv = {10, 0}; то тайм-аут срабатывает (хотя раньше чем 10 сек. - почти сразу) Но если мне нужно всего 100 мс struct timeval tv = {0, 100 * 1000}; то висит на recv. В чем прикол ? |
Сообщ.
#2
,
|
|
|
код то покажи, не жадничай.
|
Сообщ.
#3
,
|
|
|
Цитата Adil @ код то покажи, не жадничай. ну примерно так struct timeval time = {0, 100 * 1000}; if (setsockopt (sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&time, sizeof(time)) == SOCKET_ERROR) { ... } |
Сообщ.
#4
,
|
|
|
M Тема перенесена из C/C++ -> C/C++: Системное программирование и WinAPI |
Сообщ.
#5
,
|
|
|
Сокет блокирующий?
P.S. Как народ вообще приложения отлаживает, - не понимаю. Ну, не заработал какой-то вызов. Ну, создай маленькое консольное приложение с проблемным кодом, по-тестируй. И тут что-то приличное можно будет выложить, что б людям не приходилось по кусочку выпытывать. А почему бы обычный способ - через select - не использовать? Ибо Цитата POSIX man setsockopt Note that not all implementations allow this option to be set. Добавлено Кстати, что у тебя за ОСь? Под виндой надо вовсе не timeval передавать. У них всё через (_|_). Там Цитата MSDN Т.е. нужно передавать обычный int в миллисекундах. Вот почему у тебя 10 сразу выскакивала - через 10 мс. Value Type Meaning SO_RCVTIMEO int Receives time-out in milliseconds (available in the Microsoft implementation of Windows Sockets 2). |
Сообщ.
#6
,
|
|
|
Цитата Adil @ Т.е. нужно передавать обычный int в миллисекундах. Вот почему у тебя 10 сразу выскакивала - через 10 мс. ааааааа.... |