Организация соединения удалённой системой

Тема в разделе "Lotus + Java + LS2J", создана пользователем AvasKvas, 4 окт 2011.

  1. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Добрый день!

    Есть такое ТЗ (начало):

    1. Программа-сервер (далее сервер) должна принимать входящие подключения по протоколу TCP/IP на TCP-порт 3696 (должна быть возможность задать другой порт при необходимости).
    2. Инициатором соединения является удаленное устройство.
    3. При подключении устройства происходит установления соединения путем приема запроса на установление TCP-соединения и занесения его в динамический пул соединений...


    Вопрос,можно ли это реализовать только на Lotus Domino? То есть следить за портом, устанавливать соединения и и в дальнейшем принимать и отправлять запросы, ну и соответственно инфу в БД клала.


    Или тут нужно внешнее приложение использовать?Например на java выполненное. Но тогда как сделать чтоб оно на сервере работало и к БД лотуса коннектилось?

    Заранее спасибо!
     
  2. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    В "Босс Референте" есть БД "Транспорт", она этим и занимается. Там есть агент на java, который слушает порт, вроде как 4000, но это не важно, оно там жёстко в коде было пробито...
    В общем, ищите и найдёте.
     
  3. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Это хорошо!Вот только где бос референт найти теперь!
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    VladSh,
    шутник, блин )) Что ты человека посылаешь на БР? :( Это же ком.решение.

    AvasKvas,
    а domino http не устраивает? Порт по-умолчанию 80, но можно и другой установить, работа по стандартному протоколу, ничего выдумывать не надо, останется написать правильно запросы и сформировать правильные ответы.
    Правда, не знаю умеет ли domino держать более одного http на разных портах. Но, если не принципиально разграничивать или есть возможность поднять отдельный сервер для этой задачи, то это наверняка будет удобнее, чем писать свой клиент-сервер. Ну, если задача не в написании своего клиент-сервера, конечно.

    А так к домино можно прикрутить java addin (или addon, или как оно там называется). Поищи, например, вот http://www.nsftools.com/tips/JavaTips.htm#javaaddin
    Этот аддон будет слушать порт, обрабатывать соединения.
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    нет, какой порт слушать-это в БР настраивается давно уже :(
    Akupaka расписал правильно, т.е. задача реализуема на лотусе, например, с помощью языка Java.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    домина интегрируется в ОС и без неё она какбэ не существует ;)
    у ОС есть файрвол, и в "нормальных" случаях никто не мешает им рулить (делая редайрект портов), в т.ч. пущая скрипты из домины...
    в линухах:
    кладем ключ (авторизация по ключу) для ssh в опред. каталог нотусни и делаем ssh команду (с рутовыми полномочиями) по изменению редайректа, используя настройки из базы
    с портом разобрались ;)
    что надо делать с соединением - я так и не понял
    по поводу адынов и портов...
    надо помнить, что не все порты доступны для bind юзеру (под кот. домина пущается), так чта хотеть слушать порт и иметь возможность - не одно и тоже и без ОС это какбэ не решаемо (в общем случае)
    не ну если есть желание похачить секурити сервера - то можно :(
    как там в винде принято - запускаем с правами админа и херачим всё подряд, делая дыры и рассадник вирусни
     
  7. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Спасибо всем!
    Значит задача реализуема!Это хорошо.

    Я вижу тут два способа - Java и http. Вот только что лучше?!


    Может стоит использовать вообще Xpage?
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ТЗ настолько странное и абстрактное, что советовать невозможно
     
  9. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    ТЗ всегда такое.)) Вот полный его вариант:

    1. Программа-сервер (далее сервер) должна принимать входящие подключения по протоколу TCP/IP на TCP-порт 3696 (должна быть возможность задать другой порт при необходимости).
    2. Инициатором соединения является удаленное устройство.
    3. При подключении устройства происходит установления соединения путем приема запроса на установление TCP-соединения и занесения его в динамический пул соединений.
    4. Устройство после успешного подключения выдает свой идентификатор в виде @IDxxxxxxx$$$VBATzzzz$$$ где xxxxxxx – идентификатор – семь знаков таблицы ASCII (заранее запрограммированных в устройство), zzzz – 4 знака таблицы ASCII которые являются обозначением переменной типа WORD (MSB-first) и обозначают напряжение батареи устройства, которое вычисляется по формуле 0.6*1023/zzzz(dec).
    5. Передача пакетов к устройству имеет формат $BFxxyy&zz&zz…&zz где xx – количество передаваемых байт в формате текстового представления BYTE, yy – количество ожидаемых байт ответа от конечного устройства в формате текстового представления BYTE, &zz – байт данных с разделителем ”&” в формате текстового представления BYTE (например $BF0305&FF&05&A3 – пакет с 3-мя байтами данных FF05A3 и ожидание 5 байт ответа).
    6. Ответ от устройства имеет формат $RFxx&zz где xx - количество передаваемых байт в формате текстового представления BYTE, &zz – байт данных с разделителем ”&” в формате текстового представления BYTE
    7. Динамический пул соединений должен содержать информацию о подключенном устройстве (идентификатор), напряжение батареи на момент подключения, IP-адрес удаленного устройства, состояние обмена данными (подключение/передача запроса xx (запросов много – хх номер запроса)/ожидание ответа xx/разбор пакета/простой (idle)). Также должна быть возможность отслеживания соединений и ведение журнала соединений.



    Там внешнее устройство,которое по протоколу TCP/IP на TCP-порт 3696 конектится с компом. ну и некоторые данные нужно в БД заносить
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    хттп не подойдёт по причине незнания устройством ёваного :(, т.к. обмен происходит двухсторонний
    не понятно, также, слово пул - явно архитектор передирал чужой конспект ;)
    короче - java
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Похоже, имелось в виду, что сервер должен обрабатывать несколько одновременных подключений.
    хттп и вправду не подойдет. Тут нужен свой сервер. Причем, как я понял, под существующий клиент.
    Остается вопрос, а зачем сюда приплетать домино? Для сбора данных? Вполне возможно реализовать данную задачу на чем-то бесплатном.
    Или заказчик хочет видеть инфу в своем домино-приложении?
     
  12. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Да ппохоже все таки java. Как я понял можно запустить java задачу на сервере. Буду разбираться как!

    Может кто направит меня поконкретней!
     
  13. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Ну дык, выше написано было про domino java add-in, надо искать инфу по этим кодовым словам
    даже ссылка была на какой-то пример, и вообще на том сайте много интересного :(
     
  14. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Всем огромное спасибо!Если справлюсь, результаты выложу!
     
  15. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    И что с того, что коммерческое? Может и патент на идею есть? :(
    Я просто указал, что решение возможно и указал пример. Если посмотреть пример кода, то от БоссРеферента от этого не убудет.
     
  16. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Так надо было сразу давать контакты ведущего конструктора в Босс-Референте, чтобы можно было официально спросить :(
    Ну или дать код самому... что есть несколько неэтично ;)
    К стати, я вот и не помню, но КМК код сервера транспорта (аддина) был отдельно от баз БРа.
     
  17. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    нужно учесть, что адын (по ссылке) не отслеживает свои копии, что нужно организовать отдельный поток на прослушку порта, и считывание символов из него
    вот пример реализации типа telnet http://www.java2s.com/Code/Java/Network-Pr...elnetClient.htm
    это клиентская часть, кот. шлёт "команды" и читает ответ

    др. словами - надо уметь работать с мультитредовыми приложениями и обрабатывать соединения

    Добавлено: вот пример клиентской и серверной части
    http://www.java2s.com/Code/Java/Network-Pr...totheclient.htm
    там идет обмен объектом...
    но делается всё в одной нити, а с адыном надо вынести в отдельную нить
    и обмениваться (как я понял) бинарными данными
     
  18. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Это имеет какой-то смысл? :)
    Если тебе "надо было", так давай, мне не надо было.
    P.S. Правильнее сделал lmike, дав ссылки. И безо всяких "контактов ведущего конструктора".
     
  19. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    VladSh
    не о чем тут спорить :)
     
  20. Eremenko

    Eremenko New Member

    Регистрация:
    1 окт 2009
    Сообщения:
    1
    Симпатии:
    0
    В босс референт это реализовано сервлетом, он стартует одновременно с хттп и слушает порт
     
Загрузка...

Поделиться этой страницей