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は手軽でいいな、とか思ってしまうよね。 かんすうこわい。