Информация об изменениях

Сообщение Socket Timeouts от 21.03.2021 20:16

Изменено 21.03.2021 20:16 TailWind

Socket Timeouts
Вопрос_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 чем то лучше обычных?
Быстрее?
Или чисто интерфейс другой?
Socket Timeouts
Вопрос_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 чем то лучше обычных?
Быстрее?
Или чисто интерфейс другой?