Frage

habe ich ein sehr kleines Programm, das eine Buchse öffnet und akzeptiert eine Verbindung. Es ergreift dann den Remote-IP und Port.

Ich möchte eine SMS-Nachricht an den Remote-Computer senden (telnet) und schließen Sie die Verbindung.

Ich kann nicht feststellen, welche Funktion eine Nachricht an das Telnet-Client für das Senden.

Die Clozure Handbuch listet eine Funktion namens „send zu“, aber es sagt, dass es für UDP-Sockets ist und ich arbeite mit TCP-Sockets.

ich hoffe, jemand kann mir sagen, was die richtige Funktion ist, oder, wenn „Senden an“ die richtige Funktion ist, wie man es richtig verwenden.

Danke

(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))
War es hilfreich?

Lösung

Die Dokumentation von CCL. ACCEPT-CONNECTION sagt, dass es einen Stream zurück

So können Sie die normalen I / O-Operationen verwenden können (Beispiel: PRINC) von Common Lisp mit diesem Strom. Für I / O-Operationen finden Sie in das HyperSpec Kapitel über ‚Ströme‘ und den ‚Drucker‘.

(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)

Andere Tipps

In SBCL (mit usocket), verwende ich die SOCKET-STREAM-Funktion einen Lisp-Stream zurückzukehren, verwenden Sie FORMAT, WRITE und dergleichen über die Dinge zu senden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top