Lisp UDP Server
Lisp UDP Client - Shammerismの続編的な内容。UDP Server を一番簡単な形で書いてみた。ClozureCL での実装例。
(let ((server (make-socket :type :datagram :local-host "127.0.0.1" :local-port 7001 :format :binary))) (do () () (multiple-value-bind (buffer length client-ip client-port) (receive-from server 512) (format t "Received data is ~A~%" buffer) (format t "Received data length is ~A~%" length) (format t "SRC-IP addr is ~A~%" client-ip) (format t "SRC-Port is ~A~%" client-port))))
receive-from は 4 つのデータを返す。そのため、multiple-value-bind で返されるデータを全て受け取って、それぞれの内容を表示するというようにしてみた。これは Ctrl-C 等で強制終了しないと終わらない。まあ、表示されるデータは binary の配列だし、IP Address も dotted な表記じゃないからよくわからない。でもサンプルなのでこれでよし。今後必要な場合は、この内容をベースに改良を加えていけばいい。