Как подключиться к системному уровню ожидать с Java?
Смотрите также лучший вопрос по этой теме.
Я только что обнаружил ожидаемый, основанный на tcl язык сценариев для автоматизации, среди прочего, соединений telnet:
thufir@mordor:~/NetBeansProjects/expect$
thufir@mordor:~/NetBeansProjects/expect$ expect example rainmaker.wunderground.com 3000
spawn telnet rainmaker.wunderground.com 3000
Trying 38.102.137.140...
Connected to rainmaker.wunderground.com.
Escape character is '^]'.
------------------------------------------------------------------------------
* Welcome to THE WEATHER UNDERGROUND telnet service! *
------------------------------------------------------------------------------
* *
* National Weather Service information provided by Alden Electronics, Inc. *
* and updated each minute as reports come in over our data feed. *
* *
* **Note: If you cannot get past this opening screen, you must use a *
* different version of the "telnet" program--some of the ones for IBM *
* compatible PC's have a bug that prevents proper connection. *
* *
* comments: jmasters@wunderground.com *
------------------------------------------------------------------------------
Press Return to continue:usage: send [args] string
while executing
"send – – “\r”"
(file "example" line 9)
thufir@mordor:~/NetBeansProjects/expect$
Какие механизмы можно использовать в Java для ожидания или в Java с ожиданием? Да, есть http://tcljava.sourceforge.net/ а также несколько других, но они кажутся устаревшими.
Если есть реализация tcl в Java, и почему бы и нет, это будет работать, я уверен. Однако из-за отсутствия обновлений на веб-страницах я делаю вывод, что ничего не было полностью реализовано...
Википедия говорит:
Джава
expect4j — an attempt at a Java clone of the original Expect
ExpectJ — a Java implementation of the Unix expect utility
Expect-for-Java — pure Java implementation of the Expect tool
Тем не менее, wait4j говорит, что это попытка, ExpectJ не менялся с 2010 года, а Expect-for-Java также не затрагивался годами.
Если эти библиотеки используются и функционируют, мои извинения, но даты указывают, что они не поддерживаются.
Я предпочел бы использовать ожидаемо и Java отдельно, но так, чтобы они взаимодействовали. Есть ли ловушка или механизм для передачи сообщений между ними?
-------------------------------------------------- ---------ОБНОВИТЬ----------
**
Jacl - интерпретатор Tcl 8.x, написанный на Java. Вы можете создавать сценарии для ваших Java-приложений на Tcl.
**
Тем не менее, библиотека не была затронута в течение некоторого времени. Я не совсем уверен, насколько хорошо это работает. Я не знаю, поддерживает ли он что-нибудь вроде expect
или нет, это выглядит как различные expect
попытки не поддерживаются.
Скорее всего, ответ Donal Fellows, что нет реального решения, является правильным. Однако может быть просто возможно использовать эту библиотеку tcl для инициирования сеанса telnet, вызывая настоящий telnet, а не с компоновщиком процессов, но это очень условно.
3 ответа
Я создал еще одну библиотеку ожиданий Java ExpectIt (не указанную в Википедии), которая реализует цикл взаимодействия. Посмотрите на этот пример.
Как с моими знаниями Swig
поможет вам лучше в соединении двух языков. Дайте мне знать, если я ошибся
Какие механизмы можно использовать в Java для ожидания или в Java с ожиданием?
Ни один на самом деле. Проблема заключается в том, что для управления псевдо-терминалами ожидаются некоторые действительно сложные низкоуровневые вещи, в которых используются интерфейсы ОС, которые JRE не предоставляет. (Это еще сложнее, если вы работаете в Windows, где используется системный API-интерфейс для отладки.) Вам придется заняться неприятными вещами с нативным кодом.
Простой путь - запустить ожидаемый в качестве подпроцесса через ProcessBuilder
,