|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.08.2014, 16:42 | #1 |
Пользователь
Регистрация: 03.09.2010
Сообщений: 10
|
Фильтр пакетов на сокет
Добрый день, подскажите пожалуйста, как можно реализовать фильтрацию пакетов на открытый сокет.
Есть клиент-сервер, когда надо, клиент отключается, оставляя открытым сокет, однако сервер продолжает слать на него пакет, не получая ответа, в итоге жрет память и падает. Могу отправить пакет, а как сказать ему: "ээ парень нет, вот этот пакет не шли". Я не особо эксперт по си, читаю все подряд по сокетам, но там больше про то как слать пакеты, а не как запрещать их слать |
06.08.2014, 17:14 | #2 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
1. Как приложение закрывается, но сокет остается открытым?
2. Зачем слать пакеты на сокет, который не должен принимать пакеты? (организуй сообщения от клиента "я (не) готов принимать" и отсылай только тем, кто готов / либо просто закрывай сокет).
alextrof94$gmail.com
Последний раз редактировалось alextrof94; 06.08.2014 в 17:29. |
06.08.2014, 17:31 | #3 |
Пользователь
Регистрация: 03.09.2010
Сообщений: 10
|
Сокет не закрывается, визуально клиент остается на месте и выполняет пару функций, включая свое присутствие, но по факту клиент отваливается и отвечать серверу уже некому.
Изменения вносить могу только со стороны сервера, клиент изменить пока проблематично =( Может можно при отключении ставить маркер и по нему уже фильтровать, если 1, то не слать? Просто сервер постоянно шлет пакет один и тот же и как его остановить я не знаю, да и вреда будет больше, если он его слать перестанет. Может есть какие команды для прерывания постоянной отправки пакетов на сокет, в си?) Или асм копать, с ним правда еще больше головняка для меня) Последний раз редактировалось bionicle12; 06.08.2014 в 17:34. |
06.08.2014, 17:36 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Если ТСР то программа по идее должна при отвале сокета получить исключение.
I'm learning to live...
|
|
06.08.2014, 17:55 | #5 |
Пользователь
Регистрация: 03.09.2010
Сообщений: 10
|
ТСР, тут до меня пара хуков сделана, из-за которых это все и продолжает работать, хоть и криво). ... Вообще думаю смысл какой от фильтра пакетов, на сокет, где никого нет. Пакеты от сервера так и будут ведь слаться-копиться, проблема останется... Может написать при получении пакета, автоматический ответ серверу, мол все ок... Наверное все равно асм надо будет, Я что-то даже в реализации запутался )
|
06.08.2014, 19:00 | #6 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
Глупо изменять серверную часть, при этом не имея доступа к клиентской части... И что, этот "маркер" будешь в ручную менять?
alextrof94$gmail.com
|
06.08.2014, 19:27 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Сервер посылает данные. Они не доходят и генерируется исключение. Ну и ради бога - формируешь сопроцесс, в котором удаленный хост пингуется неким образом. Как только пинг проходит сопроцесс пробует посылать данные снова. Если у тебя утечка памяти, значит сервак нужно СРОЧНО переделывать. Причем кардинально менять механизм.
I'm learning to live...
|
|
07.08.2014, 15:53 | #8 |
Пользователь
Регистрация: 03.09.2010
Сообщений: 10
|
По хорошему да, его бы полностью переписать, а то он со времен мамонтов, но это не быстрое решение =( Может посоветуете пару статей для более скорого освоения данного ремесла?
|
07.08.2014, 16:25 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Та любую подборку по winsocks.
У тебя какой компиль?
I'm learning to live...
|
07.08.2014, 19:32 | #10 |
Пользователь
Регистрация: 03.09.2010
Сообщений: 10
|
Встроенный в visual studio 2013
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
HTTP-фильтр пакетов, искать application/json | grib_aga | Фриланс | 2 | 13.08.2013 08:50 |
Сокет останавливает другой сокет. | batand | C/C++ Сетевое программирование | 2 | 09.10.2012 11:58 |
Вопрос по WinSock: "сокет=сокет." | Ksardas13 | C/C++ Сетевое программирование | 2 | 27.11.2011 16:12 |
Фильтр пакетов | Stolen | Общие вопросы Delphi | 0 | 07.02.2009 09:38 |