|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.09.2013, 14:42 | #1 |
Пользователь
Регистрация: 14.11.2010
Сообщений: 27
|
Проблемы с ServerSocket в консоли
Решил перевести серверное приложение из оконного в консольный режим и возникла тут же проблема. клиент подключается но события не отрабатывают. их заранее привязал.
dpr - файл Код:
Код:
Последний раз редактировалось moon-guest; 20.09.2013 в 05:11. |
19.09.2013, 20:13 | #2 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
Процедура - не событие. Событие - TNotifyEvent.
Код:
alextrof94$gmail.com
|
20.09.2013, 08:04 | #3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,876
|
Компоненты дельфишные, такие как серверсокет и клиентсокет, в работе опираются на принятие месаджей винды, и в оконной программе с этим проблем нет, а вот в консольной - есть, она не вполне предназначена для обработки сообщений винды, это надо сделать насильно.
Вот по ссылочке http://forum.pascal.net.ru/index.php?showtopic=24477 поизучайте, там как раз бесконечный цикл приёма-диспатча сообщений сделан. alextrof94, Вы неправы, в классе-обёртке для серверсокета нет смысла хранить сам носитель ивента, т.к. используются ивенты (носители) из самого серверсокета, а вот подписчики (обработчики/хендлеры для этих ивентов) как раз и должны из некого класса браться (методы с нужными для события сигнатурами методов), что и сделано в обёртке. Возможно, Вы немного запутались (раз уж употребляете оборот речи в котором видно сомнение), лучше освежить теорию, да и при сомнениях лучше сперва проверить на практике, прежде чем советовать. Последний раз редактировалось phomm; 20.09.2013 в 08:10. |
20.09.2013, 08:27 | #4 |
Пользователь
Регистрация: 14.11.2010
Сообщений: 27
|
Так не будет работать потому что к событию привязывается процедура которая будет выполняться при отработки данного события. А здесь получается что не отрабатывает данное событие. Может быть это какие-то ограничения для консоли у TServerSocket в Delphi 7?
|
20.09.2013, 08:29 | #5 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
stNonBlocking - через оконные сообщения! Где выборка GetMessage? нету!
или выборку крути или в консоли пользуй ThreadBlocking режим, в событии OnGetThread создаешь поток и в потоке обрабатываешь запрос
Не стесняемся, плюсуем!
|
20.09.2013, 09:22 | #6 |
Пользователь
Регистрация: 14.11.2010
Сообщений: 27
|
Обработка в потоке решила все вопросы. Спасибо Всем!
|
23.09.2013, 12:37 | #7 |
Пользователь
Регистрация: 14.11.2010
Сообщений: 27
|
После перехода в поток не возможно отследить обрыв канала связи. Перерыл много постов и все как один слизаны с help borland. даже стандартное решение типа:
Код:
Кто может подсказать как реализовать слежку за целостностью канала связи? |
23.09.2013, 16:52 | #8 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
если Recv вернет 0 - соединение закрыто, если -1 то какой-то трабл и вызывай эксепшен.
Код:
Не стесняемся, плюсуем!
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ServerSocket | stalker1995s | Общие вопросы Delphi | 3 | 02.01.2013 13:17 |
проблемы с отображением рус. яз в консоли. | Repac123456 | C++ Builder | 2 | 23.02.2011 16:37 |
ServerSocket | MyIE | Работа с сетью в Delphi | 9 | 24.06.2010 00:11 |
Есть ли у IdTCPServer такое свойство как у ServerSocket: ServerSocket.Socket.ActiveConnectio ns? | TwiX | Работа с сетью в Delphi | 3 | 07.03.2010 14:28 |
Работа с ClientSocket и ServerSocket из консоли | D_E_N | Работа с сетью в Delphi | 6 | 28.07.2009 00:27 |