PageRenderTime 25ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/examples/CL/hwserver.lisp

https://github.com/pjkundert/zguide
Lisp | 37 lines | 18 code | 7 blank | 12 comment | 0 complexity | 956ae30e73280560c9554bc8a96e297d MD5 | raw file
  1. ;;; -*- Mode:Lisp; Syntax:ANSI-Common-Lisp; -*-
  2. ;;;
  3. ;;; Hello World server in Common Lisp
  4. ;;; Binds REP socket to tcp://*:5555
  5. ;;; Expects "Hello" from client, replies with "World"
  6. ;;;
  7. ;;; Kamil Shakirov <kamils80@gmail.com>
  8. ;;;
  9. (defpackage #:zguide.hwserver
  10. (:nicknames #:hwserver)
  11. (:use #:cl #:zhelpers)
  12. (:export #:main))
  13. (in-package :zguide.hwserver)
  14. (defun main ()
  15. ;; Prepare our context and socket
  16. (zmq:with-context (context 1)
  17. (zmq:with-socket (socket context zmq:rep)
  18. (zmq:bind socket "tcp://*:5555")
  19. (loop
  20. (let ((request (make-instance 'zmq:msg)))
  21. ;; Wait for next request from client
  22. (zmq:recv socket request)
  23. (message "Received request: [~A]~%"
  24. (zmq:msg-data-as-string request))
  25. ;; Do some 'work'
  26. (sleep 1)
  27. ;; Send reply back to client
  28. (let ((reply (make-instance 'zmq:msg :data "World")))
  29. (zmq:send socket reply))))))
  30. (cleanup))