Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Вниз

Заброшенные сокеты   Найти похожие ветки 

 
Евгений07   (2011-09-16 16:47) [0]

Доброго времени!
Встал такой вопрос: что делать с брошенными клиентом сокетами?
Пример
Сторонняя прога запускает мою ДЛЛ
Клиентский сокет подключается к моему серверу

Сторонняя прога вырубает мою ДЛЛ. Без объявления
Сервером не могу вырубить сокет клиента

Сторонняя прога опять запускает мою ДЛЛ
Клиентский сокет хочет подключиться к моему серверу


 
DiamondShark ©   (2011-09-16 19:20) [1]

Если русский язык для вас родной, то стоит подумать о визите к психиатру, поскольку подобная речь -- очень тревожный симптом.


 
Rouse_ ©   (2011-09-16 19:25) [2]


> Сторонняя прога вырубает мою ДЛЛ. Без объявления
> Сервером не могу вырубить сокет клиента

должно пройти уведомление о разрыве сессии (ну тут смотря какая модель транспорта используется, но в итоге все равно уведомление есть).
В любом случае при повторном соединении проблем быть не должно, или неверно описан механизм.


 
Евгений07   (2011-09-16 20:25) [3]

DiamondShark ©   (16.09.11 19:20) [1]

Если русский язык для вас родной


Сторонняя прога запускает мою ДЛЛ
Клиентский сокет подключается к серверу

Сторонняя прога вырубает мою ДЛЛ.
Сервер не вырубает клиента

Сторонняя прога опять запускает мою ДЛЛ
Клиентский же сокет тащится к серверу

Да я же поэт сокетов!


 
Sha ©   (2011-09-16 20:42) [4]

Кто понял, причем тут сторонняя прога и его ДЛЛ?


 
Rouse_ ©   (2011-09-16 21:06) [5]

Ну судя по всему клиент находится в библиотеке...


 
Sha ©   (2011-09-16 21:09) [6]

Ну как придет, пусть расскажет:
1 Какие операции с сокетами выполняет программа, какие - DLL?
2 Срубает DLL - что это значит?
3 Что сохранилось в контексте? Что утекло? Какие операции повисли?
4 Снова запускает - что это значит?
5 Контекст очищен? Все снова - здорово?


 
Евгений07   (2011-09-16 21:50) [7]


> Rouse_ ©   (16.09.11 19:25) [2


С клиентом могут быть ситуации:
1. Вырублена прога с длл клиентом
2. Вырублена длл, сокет жив
   включена длл повторно

Ситуация с сервером:  перезапущен слушающий сокет
1. включен клиент = все нормально
2. включена прога с вырубленной длл, сокет жив

У моего сервера 1 клиент


 
Rouse_ ©   (2011-09-16 22:22) [8]


> 2. Вырублена длл, сокет жив

С клиентской или серверной стороны?


 
Евгений07   (2011-09-16 22:51) [9]

С клиентской  стороны?


 
Евгений07   (2011-09-16 22:52) [10]

Rouse_ ©   (16.09.11 22:22) [8]
Сокет с жив клиентской  стороны


 
Евгений07   (2011-09-16 23:11) [11]

Rouse_ ©   (16.09.11 22:22) [8]
Прошу прощения


> Евгений07   (16.09.11 22:52) [10]
>
> Rouse_ ©   (16.09.11 22:22) [8]
> Сокет с жив клиентской  стороны

Не правильный ответ

Вырубается длл с клиентом
На сервере остается сокет с соединением
На перезапуск сокета отвечает 10038 ошибкой
Убирается перезагрузкой серверной проги


 
sniknik ©   (2011-09-16 23:18) [12]

> Не правильный ответ
это экзамен?

> На перезапуск сокета отвечает 10038 ошибкой
???
это не "сокет занят" из-за того что "срублен", это "сокетная операция на "не сокете"", т.е. обьект/значение в переменной содержащей указатель на обьект перестало быть сокетом...
короче, кривой код не обрабатывает ошибки, а засоряет переменные "мусором".


 
DVM ©   (2011-09-16 23:26) [13]

Вырублена  длл - это что такое?


 
Sha ©   (2011-09-16 23:42) [14]

Ну ясно же, это когда ее срубили, а снова не запустили.


 
DVM ©   (2011-09-17 00:03) [15]


> Sha ©   (16.09.11 23:42) [14]

Тогда возникает другой вопрос, что такое срубили? :)

"Заброшенные сокеты" - хорошее название для книги или фильма.


 
Sha ©   (2011-09-17 00:09) [16]

Мне тоже так подумалось.
В тексте еще встречаются живые сокеты, которых бросил клиент. Почему-то хочется их обогреть и накормить.


 
Игорь Шевченко ©   (2011-09-17 00:13) [17]

Sha ©   (17.09.11 00:09) [16]

А автору хочется их прибить, чтобы не мучились


 
Евгений07   (2011-09-17 00:24) [18]

Немного отхлебнул из "Программирование в сетях виндовс", подумал.

Получается, что когда вырубают мою длл, то отключают все ссылки на сокет клиента. Но сокет жив! У него просто грохнули хозяина
Надо посмотреть, может ли сокет сервера отдать команду секету клиента закройся напрямую, без хозяина,
А новая длл к старому сокету доступа не имеет и иметь не может. Соответственно пытается завести нового


 
Sha ©   (2011-09-17 00:28) [19]

клиента или хозяина?


 
Евгений07   (2011-09-17 00:28) [20]

Спать.
Убить сокет.
Пусть мне приснится киллер сокета


 
Sha ©   (2011-09-17 00:48) [21]

Общество защиты сокетов рекомендует выгуливать их в ошейниках.
Ошейник позволит отличить домашний сокет от дикого,
а номерок на ошейнике - определить его хозяина.


 
Германн ©   (2011-09-17 00:54) [22]


> короче, кривой код не обрабатывает ошибки, а засоряет переменные
> "мусором".

+1
А сокеты "убить" - это нужно очень постараться!


 
DiamondShark ©   (2011-09-17 00:54) [23]


> "Заброшенные сокеты" - хорошее название для книги или фильма.

Lost Socks
(в переводе студии "Полный П")


 
Inovet ©   (2011-09-17 09:52) [24]

> [18] Евгений07   (17.09.11 00:24)
> Немного отхлебнул из "Программирование в сетях виндовс", подумал.

Ты точно из того источника отхлебнул? Может поэзия сокетов от другого попёрла.


 
sniknik ©   (2011-09-17 10:21) [25]

> Но сокет жив!
ну прямо живее всех живых... если объект закрыт/освобожден, ссылка на него сразу становится "мусором", неважно что в ней еще есть указатель и по нему видны данные... сам объект уже не жив, и это даже не зомби, это труп.

> Немного отхлебнул из "Программирование в сетях виндовс", подумал.
не о там наверное... надо об основах думать в твоем случае. (ИМХО)


 
Евгений07   (2011-09-20 01:38) [26]

Сокет взят.
Последняя капля его крови:
WSAGetLastError = 6
Пол дня рыл в инете. Нету халявы. Нету
Оказалось, в WinSock2 6 = WSA_INVALID_HANDLE
Там есть еще несколько кодов меньше WSABASEERR


 
Inovet ©   (2011-09-20 09:10) [27]

> [26] Евгений07   (20.09.11 01:38)
> Пол дня рыл в инете. Нету халявы. Нету

С такими вопросами как сдесь и не удивительно.


 
sniknik ©   (2011-09-20 09:31) [28]

сразу после значимой информации (код ошибки) тебе сказали, что в переменной мусор... т.е. бесплатное консультирование вместо платного ЦТО. что это как не халява?
нежелание понимать ответы это твоя проблема. и вот теперь "вах. все дело в хендле инвалид, а вы мужики то, в инете, и не знали". повторил другими словами, что в переменной мусор, и это типа решение... LOL


 
Евгений07   (2011-09-20 11:37) [29]


> sniknik ©   (20.09.11 09:31) [28]

хендле инвалид вылез, когда я изменил сокет, найдя в чужой проге способ правильно завершить работу связи со стороны клиента.

А если бы не смог?
В процессе работы нить клиента с ДЛЛ может отключатся и подключатся сама
При отключении нити с ДЛЛ грохаются переменные, связанные с сокетами, а сокеты остаются,
Можно конечно было на новое подключение создавать новый сокет, а что было делать со старыми?
И сколько их было бы?

Первый вопрос остался:

как можно со стороны сервера убрать сокеты, к которым со стороны клиента  нет переменных.
Требования к ДЛЛ специфичны


 
Сергей М. ©   (2011-09-20 11:58) [30]

> нить клиента с ДЛЛ может отключатся и подключатся сама

Это как ?)


 
Евгений07   (2011-09-20 12:03) [31]

как можно со стороны сервера убрать сокеты клиента, к которым со стороны клиента  утрачены ссылки.
Так правильно


> sniknik ©   (20.09.11 09:31) [28]


В правильном ответе на нужно интерпретированный отвечающим вопрос тоже есть польза, но для задающего лучший ответ на его вопрос, пусть и не не точно сформулированный.


 
Сергей М. ©   (2011-09-20 12:08) [32]


> как можно со стороны сервера убрать сокеты клиента, к которым
> со стороны клиента  утрачены ссылки


Да никак)


 
sniknik ©   (2011-09-20 13:02) [33]

> как можно со стороны сервера убрать сокеты клиента, к которым со стороны клиента  утрачены ссылки.
а как можно со стороны ... ну скажем бывшей "любовницы" убрать запись (указатель на) о себе из записных книжек бывших "любовников"?

или скажем со стороны квартиры из листка (указателя) приезжающей тещи?

... и т.д.

указатель на что-то не может быть разрушен со стороны объекта, чтобы с этим самым объектом не случилось... (правило, исключения могут быть, но... )


 
sniknik ©   (2011-09-20 13:06) [34]

>> нить клиента с ДЛЛ может отключатся и подключатся сама
> Это как ?)
крибле-крабле-бумс...
так примерно. ;)


 
Сергей М. ©   (2011-09-20 13:09) [35]


> крибле-крабле-бумс...
> так примерно


))
Похоже на то, судя по описанию)


 
Евгений07   (2011-09-20 19:01) [36]

Нить моего клиента управляется сторонней прогой, по своей логике


 
Евгений07   (2011-09-20 19:07) [37]


> Сергей М. ©   (20.09.11 12:08) [32]
> Да никак)

И это похоже на чистую голую истину.
Никакой надежды слесарю гинекологу с процессором


 
sniknik ©   (2011-09-20 19:28) [38]

> Нить моего клиента управляется сторонней прогой, по своей логике
и что?

> Никакой надежды слесарю гинекологу с процессором
ну почему же? есть "запасная" надежда для всех, на нанятого программиста...


 
sniknik ©   (2011-09-20 19:40) [39]

> и что?
в смысле. - чем это мешает исправить ошибки в твоем коде?


 
Евгений07   (2011-09-20 21:45) [40]

Ошибки исправил.
Сделал как положено клиенту = closeSocet
Но перехватить смог не все ситуации завершения нити с ДЛЛ
Если припрет, буду думать
Пока все работает



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.007 c
1-1278308829
HikTronic
2010-07-05 09:47
2012.01.01
формы, потоки и TWebBrowser


15-1315701740
Думкин_
2011-09-11 04:42
2012.01.01
Игоря Шевченко, С Юбилеем!


3-1269443878
gog
2010-03-24 18:17
2012.01.01
Не читаются unicode данные


15-1314702451
Sergey Masloff
2011-08-30 15:07
2012.01.01
Ну че ворлд тур приближается. Кто идет, я буду


15-1316101116
Dennis I. Komarov
2011-09-15 19:38
2012.01.01
w32.downadup.b





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский