![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Racer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
Пробую использовать Сокеты в своих длл. Одна длл для сервера другая для клиента. вызываются функи из длл из другого языка- MQL4(это язык для роботов в MT4).
Вопрос в следующем: когда клиент соединяется с сервером я это событие показываю в мессаге и посылаю клиенту условный код - 777- типа что мы соединены. затем с определенной периодичностью вызываю функу write(s: integer) из сервера и так же read:integer из клиента. то есть если в сокет сервак еще не писал то реад возвращает 777 (или 555 при не соединении). 1 раз при соединении они данными обменялись. но потом вызываю райт и клиент не получает новые данные. в чем загвоздка? а и еще... после обмена данными при соединении кол-во клиентов сервак показывает 0. получается что клиент сам отсоединился, или как? |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
Ничего не понятно.
Выдержки из кода: - создания - соединения - обмена информацией в студию. Добавлено через 1 минуту и 45 секунд TCPView в помощь |
|||
|
||||
Racer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
Код сейчас приложу. за программу спасибо.
Присоединённый файл ( Кол-во скачиваний: 29 ) ![]() |
|||
|
||||
Racer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
меня никто не спасет?
![]() |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
||||
|
||||
Racer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
я соорудил. оно все работает. проблема только когда я их использую в MetaTrader4. тогда оно не работает. а а утилита марка руссиновича говорит что соединение есть. могу приложить еще коды роботов МТ4, если надо.
|
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 3 Всего: 50 |
Racer,
Для нормальной работы в DLL (а также в доп. потоке) для этих компонент должна быть организована очередь выборки сообщений. Кроме того, чем оправдано использование ShowMessage в DLL? -------------------- |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
Про доп.поток - согласен, а вот основной (и без разницы - dll или нет, адресное пространство одно) тут ни при чем - в нем итак организована очередь, в основном приложении. Иначе - в stNonBlocking не работала бы отправка/прием данных. Добавлено через 4 минуты и 44 секунды если приложен полный код dll, то у меня есть бредовое предоположение - основная программа самостоятельно выгружает dll, в результате чего само соединение остается (его же никто не уничтожал, код dllMain отсутсвует), а вот вновь подгруженные экземпляры dll само собой ничего о "предыдущем" коннекте не знают. сделай dllMain и снабди код дллок текстовым логом. Что за звери? Это сообщение отредактировал(а) kami - 4.7.2010, 19:24 |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 3 Всего: 50 |
Может быть. Отправка и приём данных и так будет работать - без разницы - в DLL или доп. потоке. А вот события построены на сообщениях. Просто я усомнился, что правильно будет обрабатываться, так как TApplication отличаются в DLL и основном приложении. -------------------- |
|||
|
||||
Racer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
1) Showmessage я сделал для отладки, что бы видет что там происходит.
2) мне тоже кажеться, что MetaTrader как то сам разрывает соединение. Как проверить так ли это? 3) Роботы MT4 это советники, которые сами торгуют на рынке Форекс через платформу MT4 ![]() Это из справки терминала :
1 раз длл срабатывают, а потом не хотят обмениваться |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
||||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
хм. я отстал от жизни)
классовые функции/процедуры можно безболезненно назначать в кач.обработчиков?
-------------------- There are always someone smarter than you... |
|||
|
||||
Racer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
да
|
|||
|
||||
Racer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
я сделал dllMain. таким образом:
Когда я закрываю терминал, то файл появляется, а сразу после вызова ф-ции терминалом файла нет. это значит, что библиотека из памяти не выгружается. Что может быть еще? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |