![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заброшенные сокеты
Евгений07 © (2011-09-16 16:47:00)Доброго времени!
Встал такой вопрос: что делать с брошенными клиентом сокетами?
Пример
Сторонняя прога запускает мою ДЛЛ
Клиентский сокет подключается к моему серверу
Сторонняя прога вырубает мою ДЛЛ. Без объявления
Сервером не могу вырубить сокет клиента
Сторонняя прога опять запускает мою ДЛЛ
Клиентский сокет хочет подключиться к моему серверу
Сергей М. (2011-09-20 12:08:00) [21]
> как можно со стороны сервера убрать сокеты клиента, к которым
> со стороны клиента утрачены ссылки
Да никак)
Евгений07 (2011-09-20 12:03:00) [22]как можно со стороны сервера убрать сокеты клиента, к которым со стороны клиента утрачены ссылки.
Так правильно
> sniknik © (20.09.11 09:31) [28]
В правильном ответе на нужно интерпретированный отвечающим вопрос тоже есть польза, но для задающего лучший ответ на его вопрос, пусть и не не точно сформулированный.
Сергей М. (2011-09-20 11:58:00) [23]> нить клиента с ДЛЛ может отключатся и подключатся сама
Это как ?)
Евгений07 (2011-09-20 11:37:00) [24]
> sniknik © (20.09.11 09:31) [28]
хендле инвалидвылез, когда я изменил сокет, найдя в чужой проге способ правильно завершить работу связи со стороны клиента.
А если бы не смог?
В процессе работы нить клиента с ДЛЛ может отключатся и подключатся сама
При отключении нити с ДЛЛ грохаются переменные, связанные с сокетами, а сокеты остаются,
Можно конечно было на новое подключение создавать новый сокет, а что было делать со старыми?
И сколько их было бы?
Первый вопрос остался:
как можно со стороны сервера убрать сокеты, к которым со стороны клиента нет переменных.
Требования к ДЛЛ специфичны
sniknik (2011-09-20 09:31:00) [25]сразу после значимой информации (код ошибки) тебе сказали, что в переменной мусор... т.е. бесплатное консультирование вместо платного ЦТО. что это как не халява?
нежелание понимать ответы это твоя проблема. и вот теперь "вах. все дело в хендле инвалид, а вы мужики то, в инете, и не знали". повторил другими словами, что в переменной мусор, и это типа решение... LOL
Inovet (2011-09-20 09:10:00) [26]> [26] Евгений07 (20.09.11 01:38)
> Пол дня рыл в инете. Нету халявы. Нету
С такими вопросами как сдесь и не удивительно.
Евгений07 (2011-09-20 01:38:00) [27]Сокет взят.
Последняя капля его крови:
WSAGetLastError = 6
Пол дня рыл в инете. Нету халявы. Нету
Оказалось, в WinSock2 6 = WSA_INVALID_HANDLE
Там есть еще несколько кодов меньше WSABASEERR
sniknik (2011-09-17 10:21:00) [28]> Но сокет жив!
ну прямо живее всех живых... если объект закрыт/освобожден, ссылка на него сразу становится "мусором", неважно что в ней еще есть указатель и по нему видны данные... сам объект уже не жив, и это даже не зомби, это труп.
> Немного отхлебнул из "Программирование в сетях виндовс", подумал.
не о там наверное... надо об основах думать в твоем случае. (ИМХО)
Inovet (2011-09-17 09:52:00) [29]> [18] Евгений07 (17.09.11 00:24)
> Немного отхлебнул из "Программирование в сетях виндовс", подумал.
Ты точно из того источника отхлебнул? Может поэзия сокетов от другого попёрла.
DiamondShark (2011-09-17 00:54:00) [30]
> "Заброшенные сокеты" - хорошее название для книги или фильма.
Lost Socks
(в переводе студии "Полный П")
Германн (2011-09-17 00:54:00) [31]
> короче, кривой код не обрабатывает ошибки, а засоряет переменные
> "мусором".
+1
А сокеты "убить" - это нужно очень постараться!
Sha (2011-09-17 00:48:00) [32]Общество защиты сокетов рекомендует выгуливать их в ошейниках.
Ошейник позволит отличить домашний сокет от дикого,
а номерок на ошейнике - определить его хозяина.
Евгений07 (2011-09-17 00:28:00) [33]Спать.
Убить сокет.
Пусть мне приснится киллер сокета
Sha (2011-09-17 00:28:00) [34]клиента или хозяина?
Евгений07 (2011-09-17 00:24:00) [35]Немного отхлебнул из "Программирование в сетях виндовс", подумал.
Получается, что когда вырубают мою длл, то отключают все ссылки на сокет клиента. Но сокет жив! У него просто грохнули хозяина
Надо посмотреть, может ли сокет сервера отдать команду секету клиента закройсянапрямую, без хозяина,
А новая длл к старому сокету доступа не имеет и иметь не может. Соответственно пытается завести нового
Игорь Шевченко (2011-09-17 00:13:00) [36]Sha © (17.09.11 00:09) [16]
А автору хочется их прибить, чтобы не мучились
Sha (2011-09-17 00:09:00) [37]Мне тоже так подумалось.
В тексте еще встречаются живые сокеты, которых бросил клиент. Почему-то хочется их обогреть и накормить.
DVM (2011-09-17 00:03:00) [38]
> Sha © (16.09.11 23:42) [14]
Тогда возникает другой вопрос, что такое срубили? :)
"Заброшенные сокеты" - хорошее название для книги или фильма.
Sha (2011-09-16 23:42:00) [39]Ну ясно же, это когда ее срубили, а снова не запустили.
DVM (2011-09-16 23:26:00) [40]Вырублена длл - это что такое?