Главная страница
    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
Но перехватить смог не все ситуации завершения нити с ДЛЛ
Если припрет, буду думать
Пока все работает


 
sniknik ©   (2011-09-20 22:25) [41]

> Но перехватить смог не все ситуации завершения нити с ДЛЛ
сколько осталось, из одной возможно ситуации ??!!

> Пока все работает
чудо, не иначе.


 
sniknik ©   (2011-09-20 22:26) [42]

> возможно
возможной


 
Германн ©   (2011-09-21 00:49) [43]


> сколько осталось, из одной возможной ситуации ??!!

+1


 
Сергей М. ©   (2011-09-21 10:30) [44]


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


Интересно, и что это за логика ?


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

1 Для меня есть явно разрешенные, документированные вещи
2 Есть неявно разрешенные, недокументированные вещи
3 Есть неявно запрещенные


 
sniknik ©   (2011-09-21 11:22) [46]

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

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


 
Сергей М. ©   (2011-09-21 12:16) [47]

Мдя ..
Тяжелый случай ..


 
Евгений07   (2011-09-21 13:33) [48]

У меня сейчас все что надо = работает
Тест пашет 3-и сутки без моих проблем
Появились другие

Почему у Уважаемых Мастеров (без кавычек)
Мдя ..
Тяжелый случай ..

не пойму

Спасибо всем Уважаемым Мастерам, которые помогли мне на страницах инета (не только этой) разобраться с сокетами.
Многие годами пашут эту тему.
Некоторым = мне разовая проблема.
Разобрался, решил, пошел дальше.
Работает.

Спасибо!


 
Inovet ©   (2011-09-21 13:37) [49]

> [48] Евгений07   (21.09.11 13:33)
> Тест пашет 3-и сутки без моих проблем
> Появились другие

Чужие т.е.. Зачем тебе чужие.


 
Sha ©   (2011-09-21 13:42) [50]

Евгений07   (21.09.11 13:33) [48]

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


 
Сергей М. ©   (2011-09-21 13:43) [51]


> Почему .. Тяжелый случай .. не пойму


Потому что вместо ответа на вопрос про логику управления твоей нитью НЕ твоей программой ты понес какую-то ахинею из 3-х пунктов)


 
sniknik ©   (2011-09-21 14:50) [52]

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



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

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

Наверх





Память: 0.58 MB
Время: 0.005 c
6-1249372147
Ливр
2009-08-04 11:49
2012.01.01
проблема: в Webbrowser е проблемы с вводом с клавиатуры


3-1269357337
dima_q
2010-03-23 18:15
2012.01.01
Информирование клиентов базы.


3-1269469439
adigozelov
2010-03-25 01:23
2012.01.01
TNT+ADO


2-1316800223
HF-Trade
2011-09-23 21:50
2012.01.01
Как узнать, позицию горизонтальной полосы прокрутки TListView


2-1316593427
i2e
2011-09-21 12:23
2012.01.01
DrawGrid - прокручивается сам. Как это отключить?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский