![]() |
|
Модераторы: feodorv |
![]()
|
|
| MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
Доброе время суток!
Работаю на "Borland C++ Builder 6.0". Задача: Сделать проверку активности приложения, через каждые 5 секунд. Компонент TUdpSocket - Вообще не работает, точнее ресивер не работает, а мне именно ресивер и нужен только. Использовал компонент IdUdpServer, но проблема заключается в том, что иногда при выключение приложения программа зависает, а иногда всё нормально. Я перепробовал 9 способов, и во всех 9 способов был один и тотже исход, то зависает программа, то всё нормально. P.S. -> Я пробовал делать проверку через поиску по хэндлу(заголовку), по классу хотел, но класс не виден у приложения(скрыт - использовал для обнаружения программу "Process Viewer 4.03"), пробовал ещё многими способами, но полюбому: При выключение программы, которая посылает пакеты по порту 55557(UDP), иногда программа зависает, а иногда всё нормально! Вот способ, который я сделал и он мне больше всего нравиться.
P.S. -> Компилирую как "Release", а не как "Full Debug". (Project -> Options -> Compiler -> Release). P.S. -> Прошу людей, кто разбирается в таких делах помочь, так как я уже около недели мучаюсь и не могу выявить проблему =( Это сообщение отредактировал(а) MuForum - 30.7.2007, 02:47 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 1 Всего: 158 |
ну и описание...
если я правильно понял(что не очень вероятно), у тебя зависает мониторящий сервер(кусок которого ты привел) в момент, когда завершается программа-клиент, которую мониторят? внимание вопросы:
|
|||
|
||||
| MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
#2, dumb - Я извиняюсь, что так непонятно написал, просто весь день вчера за компьютером проторчал и голова уже ночью вообще не варила...
Сейчас постараюсь внятно и доступно всё объяснить! ------------------------------------------------------------------------ Есть приложение "JoinServer.exe" (Эта не моя программа), JS посылает 2 пакета в секунду по порту 55557(UDP). JS отправляет пакет в 8 байт, вот такого формата: "\xC1\x08\x02\xF1\x00\x00\x00\x00". Есть другая программа ConnectServer.exe(Моя программа), CS должен принимать этот пакет по порту 55557(UDP), Обрабатывать и если заголовок этого пакета(3 байт) равен "0x02", то тогда показывать статистику и делать другие действия! P.S. -> Как я реализовал это: Когда приходит пакет по порту 55557(UDP), дальше этот пакет передаётся функции "PacketCore2", если 3 байт пакета строго равен "0x02", то это пакет статистики JS, в этот момент запоминается время прибытия пакета(Записывается в глобальную переменную "JStime"). Дальше каждые 5 секунд срабатывает таймер, и там уже условия: Если данное время минут время "JStime" больше 5 секунд, значит JS сейчас не доступен! Вопрос: В чем заключается "подвисание"? Ответ: Программа покрывается белым фоном и с ней не возможно работать(В Диспетчере пишется: Не отвечает). P.S. -> ConnectServer.exe - Это одностороннее приложение! (JoinServer.exe был написан не мной) Но проблема в том, что при закрытие JoinServer.exe моя программа(ConnectServer.exe) иногда подвисает(пока обратно не включить JS или вырубить процесс), а иногда всё нормально. Вот и возникает вопрос, где я допустил ошибку?! P.S. -> Вот свойства компонента:
Это сообщение отредактировал(а) MuForum - 30.7.2007, 12:24 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
| MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
#for all - Всё я свою проблему решил, она заключалась в том, что я не включил параметр "ThreadedEvent" + в косметике кода.
Но возникла теперь другая проблема, вот сам код:
Проблема заключается в том, что теперь какой первый пакет пришел, то только он и обрабатывается почему-то =( Тоесть: Если первый пакет пришел с 3 байтом "0x01", то только он и обрабатывается, а пакет с 3 байтом "0x02" почему-то не обрабатывается, тоесть тупо пропускается =( -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 1 Всего: 158 |
нельзя тебе включать ThreadedEvent. я потому и спрашивал насчет него, чтоб удостовериться, что ты его случайно не включил. выключи.
|
|||
|
||||
| MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
#5, dumb - Благодарю вас за помощь, сейчас всё работает превосходно!
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |