Здравствуйте, sercher, Вы писали:
S>Здравствуйте, butcher, Вы писали:
B>>Здравствуйте, _Lion, Вы писали:
_L>>>Нет ребята закрывать не катит,принемать это извените трафик режит как будто ты все получил, так что предложенные варианты не подходят,а то что другое что то использовать привидите пример, я в частности использую winsocket2
B>>Если уж твоя программа узнала про эти данные, то трафик вы уже получили, можете не беспокоится. Остаётся только считать и проигнорировать, либо закрыть сокет.
S> Я так понял, имеется ввиду на отправляющей стороне. Т.е. мы вызвали send() а потом передумали и надо отменить отсылку данных. Сомневаюсь, что в сокетах есть возможность очистить выходной буфер.
Нет задача следующая: Пусть клиент скачивает с сервера по средствам socket некоторый большой кусок данных,он получил часть пакетов,знает что еще будет куча побольше и вдруг у него просыпается здравый смысл,а это дорого на какой я это качаю.Описываем техническую сторону вопроса: сервер с помощью команды WSASend отправил ассинхронно(тоесть не стал дожидатся полного отправления) большой пакет данных и забыл про них... Клиент в цикле проверяет состояние сокета и обрабатывает FD_READ... Он получил пару частей этого большого пакета из загаловка получил информацию о всем пакете...(прошу заметить сокет может читать и отсылать частями не превыщающий некоторый размер)... и теперь хочет отменить дальнейшее получение данных именно этого пакета...Тоесть необходимо что то вроде очистки сокета или посылки серверу сообщения что все получено успешно.Я вроде где то читал что можно перевести состояние сокета,тоесть сделать ShutDown([на получение,не помню ключ]),но при этом думаю он откажится получать всю очередь сообщения и это равносильно обрыву сокета вообще.Цель: прервать получение текушего сообщения,так что бы была возможна дальнейшая работа с сокетом и при этом затратить минимум трафика...
Вот теперь вроде все написал... Так что друзья, есть предложения???