Socket Timeouts
От: TailWind  
Дата: 21.03.21 20:16
Оценка:
Вопрос_1

Есть у меня класс обёртка над сокетом
У него есть функция Connect

Там я перевожу сокет в не блокирующий режим
Делаю connect
Жду с помощью select

Если не дождался, кидаю Exception

Процедура завершается
Но я передавал в connect указатель на sockaddr_in
Он теперь стал недействительным

А сокет то всё ещё делает connect

Его нужно как-то остановить?
Или он скопировал себе структуру?

Вопрос_2
Как обстоит дело с recv?
Там то я передаю указатель на буфер данных
Вышел я из процедуры через Exception
А он данные получил и запишет их уже по не валидному адресу

Вопрос_3
Слава богу у recv есть встроенный timeout
Который я устанавливаю через setsockopt RCVTIMEO

Но когда я замеряю время через которое вернёт управление reсv
Всегда получается на 500мс больше
Ставлю 3000, получаю 3500
Ставлю 10000, получаю 10500

Что-то делаю не так?

Вопрос_4
Функции с префиксом WSA чем то лучше обычных?
Быстрее?
Или чисто интерфейс другой?
Отредактировано 21.03.2021 20:16 TailWind . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.