質問

私はソケットを開き、接続を受け入れる非常に小さなプログラムを持っています。その後、リモートIPとポートをつかみます。

私は、リモートコンピュータ(telnetの)にテキストメッセージを送信し、接続を終了したいと思います。

私はtelnetクライアントにメッセージを送信するためである機能を判断することはできません。

Clozureマニュアルには、「送信と呼ばれる機能を示していますしかし、それは言う「には、UDPソケットのためだと私はTCPソケットで働いています。

私は誰かが正しい関数である、または、「送信-する」場合は、それを適切に使用する方法、適切な機能です。

何を私に伝えることができます願っています

おかげ

(setq my-socket (ccl:make-socket :connect :passive :format :text
        :local-port 20000 :reuse-address t))

(setq connection (ccl:accept-connection my-socket))

(setq remote-host (ccl:remote-host connection))

(setq remote-port (ccl:remote-port connection))
役に立ちましたか?

解決

CCLのドキュメント:ACCEPT-CONNECTIONは、ストリームを返すと言っている。

あなたは、通常のI / O操作(例:のprinc)を使用することができますので、そのストリームでのCommon Lispのを。 I / O操作では「ストリーム」と「プリンタの上HyperSpecの章を参照してください。

(defun st (port)
  (ccl:with-open-socket (socket :connect :passive
                                :format :text
                                :local-port port
                                :reuse-address t)
    (with-open-stream (stream (ccl:accept-connection socket))
      (princ "CCL example response" stream))))

; example call
(st 20000)

他のヒント

SBCL(usocketを使用して)で、私は、全体で物事を送信するために、FORMATを使用WRITEなど、その後、lispのストリームを返すためにSOCKET-STREAM機能を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top