Lisp UDP Client
(let ((client (make-socket :type :datagram))) (multiple-value-bind (char-vector count) (encode-string-to-octets "Test" :external-format :UTF-8) (format t "char-vector is ~A~%" char-vector) (format t "char-vector type is ~A~%" (type-of char-vector)) (format t "count is ~A~%" count) (send-to client char-vector count :remote-host "127.0.0.1" :remote-port 12345))) (quit)
TCP とはだいぶ勝手が違う。コード量はこちらの方が少ないが。make-socket は type を datagram にする。TCP では type は stream だ。あと、接続先は make-socket ではなく、送信のタイミングで指定する。これは言語に関係なく同じだな。send-to を使用するが、send-to は binary でなければならないようで、テキスト情報は事前にバイナリの配列にしておく必要がある。送信サイズも必要だから、encode-string-to-octets を使用した。これは Clozure CL の例。他の処理系であれば、その処理系に用意されている関数を使用しなければならない。