another_face_another_smile****@yahoo*****
another_face_another_smile****@yahoo*****
2006年 8月 20日 (日) 13:57:06 JST
赤木です。 書き忘れていた事があったのですが。 (format out "~a" data) の後に (flush out) としても効果はありませんでした。 サーバもクライアントもです。 At Sun, 20 Aug 2006 08:43:12 +0900, 自分 wrote: > > すみません。 > タイトルつけ忘れていました。 > > At Sun, 20 Aug 2006 07:47:18 +0900, > another_face_another_smile****@yahoo***** wrote: > > > > 赤木といいます。 > > > > ソケットを使って サーバ - クライアントで > > 文字列のうけ渡しをしようとしています。 > > > > こんな感じです。 > > > > クライアント サーバ > > stdin ------------> > > <----------- 無加工で返す > > > > それで以下のようなものを作ったのですが > > readで停止してしまいます。 > > 改行を入れて送信すれば停止しないことは分かったのですが > > 原因が分かりません。 > > > > ---- クライアント側 ----- > > (use gauche.net) > > > > (let ((sock (make-client-socket 'inet "localhost" 19999))) > > (let ((in (socket-input-port sock)) > > (out (socket-output-port sock :buffering :none))) > > (let loop () > > (let ((data (read-line))) > > (format out "~a" data) > > (format #t "SEND: ~a" data) (newline) > > (format #t "RECV: ~a" (read in)) (newline) > > (loop))))) > > > > ---- サーバ側 ----- > > (use gauche.net) > > > > (let* ((serv (make-server-socket 'inet 19999 :reuse-addr? #t)) > > (sock (socket-accept serv))) > > (format #t "accept!\n") > > (let ((in (socket-input-port sock)) > > (out (socket-output-port sock :buffering :none))) > > (let loop () > > (let ((data (read in))) > > (format #t "R: ~a" data) (newline) > > (format out "~a" data)) > > (loop)))) > > > > > > 改行を入れたものは以下のようになります。 > > クライアント、サーバ共に (format out ...) の後に (newline) を > > 入れただけです。 > > > > ---- クライアント側 ----- > > (use gauche.net) > > > > (let ((sock (make-client-socket 'inet "localhost" 19999))) > > (let ((in (socket-input-port sock)) > > (out (socket-output-port sock :buffering :none))) > > (let loop () > > (let ((data (read-line))) > > (format out "~a" data) (newline out) > > (format #t "SEND: ~a" data) (newline) > > (format #t "RECV: ~a" (read in)) (newline) > > (loop))))) > > > > ---- サーバ側 ----- > > (use gauche.net) > > > > (let* ((serv (make-server-socket 'inet 19999 :reuse-addr? #t)) > > (sock (socket-accept serv))) > > (format #t "accept!\n") > > (let ((in (socket-input-port sock)) > > (out (socket-output-port sock :buffering :none))) > > (let loop () > > (let ((data (read in))) > > (format #t "R: ~a" data) (newline) > > (format out "~a" data) (newline out)) > > (loop)))) > > > > > > また、newline でなく format の部分に "~a\n" などと入れても効果は同じでした。 > > その他気になる点としては、 > > :buffering :none の部分は間違っていないでしょうか? > > 入力ポートにもなにか設定が必要でしょうか? > > > > それと直接関係ないですが、call-with-client-socket を使った場合に > > :buffering :none を設定する方法はあるのでしょうか? > > > > > > よろしくお願いします。 > > -------------------------------------- > > Let's start Yahoo! Auction - Free Campaign Now! > > http://pr.mail.yahoo.co.jp/auction/ > > _______________________________________________ > > Gauche-devel-jp mailing list > > Gauch****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/gauche-devel-jp > -------------------------------------- > Let's start Yahoo! Auction - Free Campaign Now! > http://pr.mail.yahoo.co.jp/auction/ > _______________________________________________ > Gauche-devel-jp mailing list > Gauch****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/gauche-devel-jp -------------------------------------- Let's start Yahoo! Auction - Free Campaign Now! http://pr.mail.yahoo.co.jp/auction/