BlankTar

about | blog | works | photo

しばらく前に試してみたことを今更公開。
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は手軽でいいな、とか思ってしまうよね。
かんすうこわい。
< サイト内検索を自作してみた。 pythonのCryptoでAES暗号を使ってみた >