#0
by punkforever
Задача: Коннект к серверу по протоколу telnet, авторизация Отправка данных (запрос) Получение данных (ответ) Желательно, код должен выполняться на сервере (регл. задание) Каким будет оптимальный вариант решения? Существуют ли готовые наработки? Спасибо.
#5
by punkforever
Нужно из 1С общаться с сервером оборудования. Мониторить, отключать, подключать и т.д. Связь по протоколам telnet (или ssh)
#6
by Остап Сулейманович
Присоединюсь. В 1С есть WEB-сервисы, HTTP-сервисы... Все штатно. Смысл в телнетах - только если на "той стороне" стоит какая специфичная железка, которая по другому никак во внешний мир не смотрит. И еще вопрос : "Коннект к серверу по протоколу telnet, авторизация ... Желательно, код должен выполняться на сервере (регл. задание)" речь за один и тот же сервер?
#7
by punkforever
Других протолов нет, железка специфичная. Сервер оборудования в локальной сети Код должен выполняться на сервере 1С, это физически другая машина.
#9
by Garikk
писать в файл... потом батником вызывать телнет, результат тоже писать в файл и читать из 1С
#10
by Jaap Vduul
, Не взлетит. Во-первых, ТС требуется интерактивное взаимодействие с хостом, а во-вторых виндовый клиент telnet работает в режиме эмуляции терминала и со StdOut не взаимодействует. ИМХО, можно что-то замутить только если telnet с ключом /f запускать и команды через sendkeys отправлять. Ну, про надёжность такого решения я промолчу.
#11
by Остап Сулейманович
В пакетном режиме - вполне можно обойтись bat-файлом. В режиме вопрос/ответ - ИМХО только эмулировать протокол средствами 1С+КакойНибудьАктивИкс.
#13
by quest
на инфостарте вроде есть же компоненты для работы с сетью. хочешь сам сервером стань, хочешь работай с другими
#16
by punkforever
Нужно попробовать.. Авторизоваться тоже можно? Пока на 1с сервере нет этого актив икса.. Он вроде с VB ставиться или как то так..
#17
by punkforever
Как вариант, конечно, поковыряться с c#, и сделать com-объект (или поискать готовый).. Примеры в сети есть. Была надежда, что кто-то сталкивался с подобной задачей, и возможно, есть более простое и элегантное решение)
#18
by VladZ
Зачем все пихать в 1С? Изначально, 1С - это программа учета. Пихать туда всякие "телнеты" - это все равно что к козе баян прикручивать. Есть механизм внешних компонент - работай через них. Тем более "отключать и подключать" 1С-у я бы не доверил.
#19
by Garikk
<поковыряться с c#, и сделать com-объект (или поискать готовый).. > Можно, а в итоге стать программером на C#, я так в своё время с VB6 на C# переехал...когда оказалось что фрагментацию пакетов из сети нормальные люди вручную собирают ...одну софтинку свою с winsock переводил... Потому что примеры в сети не учитывают кучи нюансов работы с сетью P.S. Лучше в данном случае winsock заюзать, будет проще, быстрее и надёжнее
#21
by punkforever
winsock - возможна ли авторизация? В любом случае, спасибо за наводку, проанализируем. Спасибо. Посмотрим.
#22
by Garikk
telnet это простой текстовый протокол, там нет понятия авторизации, туда просто надо логин и пароль прямым текстом передать с символами перевода строки
#24
by beaver1971
Нет в 1С такого типа, ну и фиг с ним, в jscript он точно есть... Вот и пусть jscript поработает прокладкой )))) Уж внутри jscript сам сокеты откроешь )))))
#25
by oleg_km
У меня собирает с АТС звонки уже больше 5 лет. Раньше было на Новый COMОбъект("MSWinsock.Winsock");, теперь все перевел на
#28
by punkforever
Пробуем через MS winsock. Код: В событии DataArrival получаем данные следующим способом Переменная Стр содержит значение "яэ%яыяыяэ'яэяэ" Подскажите, какая кодировка строк нужна, можно ли это сделать в 1С. Предполагаю, что нужно кодировать как строку для sendData так и полученный ответ..
#29
by ТолькоПросмотр
Нужно выполнить команду системы, то же самое, что писать в командной строке, ну или батник.
#30
by oleg_km
MSWinsock.Winsock работает с ANSI - у него в документации написано. Можно в свойствах сокета указать что в байтах. байты записать в файл, а потом уже из файла смотреть
#32
by punkforever
Как в SendData передать ANSI строку из 1С.. А из GetData получить в формате, читабельном в 1с..
#33
by oleg_km
У тебя похоже сервер работает с Юникодом. Примера работы с байтами нет. Не работал, а сейчас тем более уже не использую. Перешел на .NET, но там сходу сложнее будет разобраться. Попробуй ответ "яэ%яыяыяэ'яэяэ" записать в файл с кодировкой ANSI, а открыть уже с кодировкой UNICODE. У меня вроде получалось
#34
by punkforever
Попробую, спасибо. Телнет Сервер - в данном случае, для тестирования, использую свой локальный компьютер.. С командной строки всё работает конечно же.. На счет байтов - нашел в методе GetData - вторым параметром можно передать тип получаемых данных.. Пока не получается правда)) Возможно, так же, есть какая то специфика программной работы с телнет протоколом.. Казалось, что должно быть попроще это всё))
#35
by oleg_km
Нет никакой специфики. Telnet-клиент - это по сути голый TCP/IP. Там есть разные заморочки по поводу как отображать на консоли. Попробуй записать ответ в файл и прочитать с разными кодировками. Мне кажется должно получиться
#36
by punkforever
Записываю в этих кодировках oem: пн%плплпн'пнпн пл ansi: яэ%яыяыяэ'яэяэ яы Через notepad++ открываю, толку нет.
#37
by oleg_km
В нотпаде все варианты юникода перепробовал? и UTF-16 и UTF-8 и UNICODE? или положился на автораспознавание?
#38
by punkforever
кодировал и конвертировал. В c#, кстати, почти тоже самое получаю (есть пример работы с сокетами) Массив байтов, которые при конвертации в ascii дают ??????.. Тут что-то прниципиально не так)
#41
by Serginio1
Ды закодируй строку в Base64. Возможно, что символы которые больше 127 как то экранируются
#43
by punkforever
Да, в массиве байтов в основном значения > 127.. Как бы понять что он хочет.. Я надеюсь получить что-то осмысленное). Как в телнет клиенте windows.. Запрос на ввод логина.. Или что-то типа "youre about to send pass.."
#44
by Serginio1
ASCIIEncoding соответствует кодовой странице Windows 20127. Поскольку ASCII — 7-разрядая кодировка, символы ASCII ограничены нижними 128 символами Юникода, от U+0000 до U+007F. Если вы используете кодировщик по умолчанию, возвращенный cdjqcndjv Encoding.ASCII или конструктором ASCIIEncoding, символы вне этого диапазона, заменяются на вопросительный знак (?) до выполнения операции кодирования. Поскольку класс ASCIIEncoding поддерживает только ограниченный набор симовлов, классы UTF8Encoding, UnicodeEncoding, и UTF32Encoding лучше подходит для глобализованных приложений. Следующие соображения помогут вам принять решение об использовании ASCIIEncoding:
#45
by punkforever
С utf8 - непонятное что-то C default - яэ%яыяыяэ'яэяэ яы Возможно это особенность телнет протокола.. Мне нужно понять что дальше отправлять, чтобы выйти на авторизацию, её пройти и начать общаться с сервером по существу)
#46
by Garikk
да нет там особенностей, протокол вообще простой, через телнет клиента даже с вебсервером общатся можно вручную проблема явно в кодировке
#50
by Salimbek
А есть другое ПО, нормально работающее с этим оборудованием? Если есть, то можно взять TCPDump и промониторить весь сетевой трафик в это время. Оттуда уже вытащить - что куда и как сообщается. Вполне возможно, что это нормальные сообщения во внутренней кодировке ПО.
#52
by punkforever
Да пока на своем компе тестирую, через телнет сервер винды.. И здесь уже затык, при первом получении)
#58
by punkforever
Пробовал такое: Даже парсинг специфический присутствует.. Не помню в чем, но тоже где то не пошло..
#61
by xaozai
Есть всякие ActiveX, которые позволяют работать по протоколу telnet программно. Вот в первых результатах поиска гугола с примером даже:
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Виснет 1С в RemoteApp, но не виснет в RDP
- КА: закрытие затратных счетов
- Как уменьшить картинку в ПолеHTMLДокумента?
- Множественное число в 1с 8
- Как извлечь содержимое подписанного ЭЦП файла?
- 1С 8.2 УТ 2.2 - ошибка при попытке открыть отчет "Реестр документов"
- Как добавить программно подчиненую/вложенную группировку в СКД
- Новая платформа ломается
- Развейте сомнения по повместимости 8.2 и 8.3 в режиме отказа от модальных окон
- Как отразить в 1С:КА возврат ОСАГО в связи с реализацией авто?
- Регламентные задания, 1с 8.2
- Настройка высоты табличного поля в управляемых формах
- Где вести учет своих услуг рядовому программисту 1С
- Обработка выбора
- Обращение к реквизиту справочника
- Настройка условий маршрутизации согласования в 1С8 Документооборот
- Как получить себестоимость? Запрос к регистру бухгалтерии.
- Конвертация данных: перенос изображений
- ЗУП 3.0 Увольнение
- ЗУП Подразделения, галочка Подразделение сформировано/расформировано