2012-05-04 10 views
1

私はClojureを初めて使用しているので、特定のポート(実際には既製のシステムをTELNET経由でこのポートに接続する)にIPへの接続を作成する簡単な例が必要です。この接続に何らかの文字を送信し、応答を受け取り、結果を表示(解釈)します。telnet in clojure

誰かが上記の接続でコードを介してこのtelnettingものを表示できますか?前もって感謝します。

答えて

5

あなたの最善の策は、

のApache commons-netが良い最初のピットストップになり、既存のTelnetクライアントライブラリをラップするのClojureのjava interopを使用することです。 There's an example (in java) of a telnet clientこれはポートに直接的であるべきである。

多くの場合、javaでコード化するclojure java interopを使用する方が簡単です。

// from TelnetClientExample 

tc = new TelnetClient(); 

TerminalTypeOptionHandler ttopt = new TerminalTypeOptionHandler("VT100", false, false, true, false); 
EchoOptionHandler echoopt = new EchoOptionHandler(true, false, true, false); 
SuppressGAOptionHandler gaopt = new SuppressGAOptionHandler(true, true, true, true); 

Clojureの中で次のようになります。

(ns telnet.core 
    (:import [org.apache.commons.net.telnet TelnetClient TelnetNotificationHandler SimpleOptionHandler EchoOptionHandler TerminalTypeOptionHandler SuppressGAOptionHandler InvalidTelnetOptionException])) 

(def tc 
    (doto (TelnetClient.) 
    (.addOptionHandler (TerminalTypeOptionHandler. 
          "VT100" false false true false)) 
    (.addOptionHandler (EchoOptionHandler. 
          true false true false)) 
    (.addOptionHandler (SuppressGAOptionHandler. 
          true true true)))) 
+0

あなたは、()接続で、もう少しそれを手の込んだ(送信)機能を受け取ることができます。 – Avi

+3

私はあなたに多くのことを伝えました、はい、私はあなたのためにすべてを書くことができましたが、それはStackoverflowの方法ではありません。いくつかのコードを書いて特定の問題がある場合は、新しい質問を作成し、そこから取得します。 – sw1nn