scheme(gauche)でTCP通信してみる
しばらく前に試してみたことを今更公開。
schemeでtcp通信をやってみました。 gauche.netってやつを使ってることから分かるとおり、gauche専用です。
受信側
(use gauche.net)
(define (handler sock)
(let ((recv (socket-recv sock 1024)))
(if (<= (string-length recv) 0)
(begin
(display "exit\n")
(socket-close sock)
(exit)))
(display "\"")(display recv)(display "\"")(newline)
(socket-send sock recv))
(handler sock))
(define (main args)
(display "create socket...\n")
(let ((server-sock (make-server-socket `inet 5000)))
(display "accept start...\n")
(let ((sock (socket-accept server-sock)))
(display "recv start...\n")
(handler sock))))
こんな感じ。 ただのエコーサーバーっすね。
送信側
(use gauche.net)
(define (input-line)
(display ">> ")(flush)
(let ((input (read-line)))
(if (eof-object? input)
(begin (newline)(exit))
input)))
(define (main args)
(let ((sock (make-client-socket `inet "127.0.0.1" 5000)))
(let loop((input (input-line)))
(socket-send sock input)
(display (socket-recv sock 1024))(newline)
(loop (input-line)))))
こんなもんで。
プロンプトっぽいのを出して、入力されたのをひたすら送信します。
こうやってみると、やっぱりpythonは手軽でいいな、とか思ってしまうよね。 かんすうこわい。