0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 3
|
|
1 | |
TCP SO_KEEPALIVE и таймаут на прием08.01.2015, 23:22. Показов 1683. Ответов 4
Метки нет (Все метки)
Есть клиент, должен посылать несколько запросов подряд, поставил SO_SND+RCVTIMEO, решил добавить ему keep-alive, но с этим проблема: send() все отправляет прекрасно, но:
1. Если setsockopt SO_KEEPALIVE устанавливаю до таймаутов, не выжидая 10000 установленных мс recv возвращает -1, WSAGetLastError 10060 WSAETIMEDOUT и ничего в буфере 2. Если после, по прошествии 10 секунд recv возвращает то же самое, но в буфере все данные пришли полностью (догадываюсь что 10 секунд назад) В чем дело? Цикл с recv у меня православный, принимает пока не вернет 0 или -1. Может надо делать как-то по-другому? Добавлено через 8 минут Без keep-alive все работает как часы
0
|
08.01.2015, 23:22 | |
Ответы с готовыми решениями:
4
Прием данных по протоколу TCP таймер и таймаут tcp проблема Прием числовых типов по TCP/IP Отправка и прием TCP пакетов |
Ушел с форума
|
|
09.01.2015, 13:44 | 2 |
Зачем ?
В 99% клиент-серверов эти опции вообще не нужны. Ну вот видите
0
|
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 3
|
|
09.01.2015, 15:44 [ТС] | 3 |
Да как-то нехорошо получается, каждый раз все делать заново, создавать сокет, коннектиться, а тут есть такая сладенькая keep-alive. Может я был неправильно понят, сервер - левый домен, к которому я отношения не имею, просто получать данные надо несколько раз, с разными параметрами в строке запроса.
0
|
Ушел с форума
|
|
09.01.2015, 15:53 | 4 |
Ну так и получайте. Закрывать соединение никто не заставляет.
0
|
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 3
|
|
10.01.2015, 14:41 [ТС] | 5 |
Без SO_KEEPALIVE (с Connection: keep-alive или вообще без заголовка) то же самое, получает все что нужно, но выходит по таймауту. Работает только с Connection: close, но тут приходится и делать все заново. Вот я и подумал что надо бы задать ему эту опцию. Может быть это вообще проблема сервера?
0
|
10.01.2015, 14:41 | |
10.01.2015, 14:41 | |
Помогаю со студенческими работами здесь
5
Прием сообщений через TCP в 1с TCP прием от клиента: Сервер считывает 21 байт не за раз, а за 7 циклов Сцена зависает при запуске TCP-клиента, когда он подключен к TCP - серверу, при этом TCP-клиент полностью функционирует Асинхронные сокеты: Как организовать разделение на прием сообщений и прием файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |