![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| ZaDoXliK |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2007 Где: Украина Репутация: нет Всего: нет |
Вечер добрый.
Есть 3 приложения, A - клиент, B - сервер, С - моя программа. А и В обмениваются данными через сокет. Я с помощью программы C внедряюсь в программу A и посылаю пакет на В от имени А. Все прекрасно работает, пакет отсылается как положено но возникает проблема. Проблема такая: Приложение В зависает. Для внедрения в чужой сокет использую DuplicateHandle.
АН-сервер SName-хендл сокета СН-моё приложение. NewHWND-дубликат. Собственно говоря приложение А зависает после:
Пакет доходит нормально но приложение А зависает. Если вызвать WSACleanup то приложение А перезапустится и все. Т.е. после WSACleanup я так понимаю соединение с сервером теряется просто напросто, по этому и перезапускается А . Как избавится от зависания клиента (А)? Это сообщение отредактировал(а) ZaDoXliK - 6.12.2009, 23:37 |
||||
|
|||||
| ZaDoXliK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2007 Где: Украина Репутация: нет Всего: нет |
Вариантов, идей, мыслей никаких нет?
|
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 3 Всего: 50 |
ZaDoXliK,
Ты уверенЮ, что сервер понимает, что ты ему посылаешьь и умеет это обрабатывать? -------------------- |
|||
|
||||
| ButtonOFF |
|
|||
|
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Полный код в студию
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
А смысл? Демо, сказал правильно - неизвестно. как приложения отреагируют на отправку незапланированных данных. Например, в моих приложениях из-за этого пойдет неправильный учет переданной информации (причем - и на передающем и на приемном концах), из-за особенностей протокола обмена. Во что это выльется - без малейшего понятия, но ничего кроме AV и других исключений в голову не приходит... Посему - не знаешь протокола обмена - нечего соваться. |
|||
|
||||
| ZaDoXliK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2007 Где: Украина Репутация: нет Всего: нет |
Я отслеживал свой пакет программой WPE Pro. Так же пробовал и отсылать свой пакет через WPE Pro. Результат один и тот же если.Пакет доходит,действие выполняетя на сервере но через WPE приложение А(клиент)не виснет и продолжает работать без изменений, а через мою программу оно зависает после команды Send. |
|||
|
||||
| ZaDoXliK |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2007 Где: Украина Репутация: нет Всего: нет |
Еще вопрос.
Вот так работает.
Тут paket после отправки=6. Это правильно.Тут читается как hex значение. А вот так не работает.
Тут paket после отправки=24. Это не правильно.Тут как обычный текст. Как сделать что бы из Memo читалось hex значение? Это сообщение отредактировал(а) ZaDoXliK - 9.2.2010, 14:16 |
||||
|
|||||
| ZaDoXliK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2007 Где: Украина Репутация: нет Всего: нет |
Странно,добавил строчку после DuplicateHandle и приложение иногда не зависает.
Теперь код выглядит так:
Возникло пару вопросов. 1)Когда делаю копию сокета,использую её-оригиналу нужно возвращать управление или оно и не теряется? 2)Может проблема зависания в том что приложение "А"(сокет которого я дублирую) построено на флешь?Ведь иногда оно не виснет,и я вижу все действия которые выполняются,а иногда экран просто замерзает, но пакеты отправляются на сервер и обрабатываются правильно.Тут уже наверно проблема с обновлением самого приложения.Т.е. нужно его как то обновить но без реконекта к серверу. Что то типа refresh или repaint. Есть у кого идеи,может какие то предположения? Не боимся отвечать,все делаем ошибки,на этом же и учимся З.Ы.Сделал тестовый сервер и приложение которые обмениваются данными,и в этом случае ничего ни где не виснет.Думаю всё таки что проблема зависания экрана в приложении "А" это как раз то что оно на флеш построено.И там тупо картинка не обновляется после того как я посылаю пакет. Это сообщение отредактировал(а) ZaDoXliK - 14.2.2010, 11:22 |
|||
|
||||
| ZaDoXliK |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2007 Где: Украина Репутация: нет Всего: нет |
Ребята,может кто ни будь продемонстрировать как использовать WSADuplicateSocket на примере? Гугл пишет одно и тоже,везде копипаст и нет толковых примеров.
Я там понимаю WSADuplicateSocket действует совсем по другому,не так как DuplicateHandle. Последовательность действий подскажите хотя бы. В DuplicateHandle я делаю так: Код DLL
Использование в программе:
|
||||
|
|||||
| ZaDoXliK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2007 Где: Украина Репутация: нет Всего: нет |
Проблема решена другим способом. Простым и безболезненным
Тему можно закрывать. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |