You need to flush-output

On Sat, Jan 12, 2019 at 10:55 AM Zhonghua Zhu <secondsqu...@gmail.com>
wrote:

> I am writing a tcp server program.
> Server uses non-blocking reading and client uses write-bytes, then server
> never read any bytes and write-bytes returns the right value.
> But when I change client's write-bytes to write-bytes-avail, server
> receives bytes immediately.
>
> I don't know why this happens.
>
> It seems like (byte-ready? in) always returns false when client using
> write-bytes.
>
> Here is the server and client program.
>
> Server Program
>
> #lang racket
>
> (require racket/tcp)
>
> (define (prn-ln . args)
>   (displayln (apply format args)))
>
> (define server-listener #f)
> (define listen-port 8000)
>
> (set! server-listener (tcp-listen listen-port))
>
> (define in #f)
> (define out #f)
> (define bytes (make-bytes 4))
> (define len 0)
>
> (define (read-sock)
>   (when (and in
>              (byte-ready? in))
>     (set! len (read-bytes-avail!* bytes in 0 4))
>     (prn-ln "read len ~a" len)
>     (prn-ln "read int ~a" (integer-bytes->integer bytes #f #f 0 4))))
>
> (define (game-loop)
>   (if (not in)
>       (when (tcp-accept-ready? server-listener)
>         (set!-values (in out) (tcp-accept server-listener))
>         (displayln "a new socket come in"))
>       (read-sock))
>   (sleep 1)
>   (game-loop))
>
> (game-loop)
>
> Client Program
>
> #lang racket
>
> (require racket/tcp)
>
> (define-values (in out) (tcp-connect "127.0.0.1" 8000))
>
> (define bytes (make-bytes 4))
> (define number 10)
> (integer->integer-bytes number 4 #f #f bytes 0)
>
> (define (loop)
>   (define ret (write-bytes bytes out 0 4))
>   (displayln (format "ret ~a" ret))
>   (sleep 1)
>   (loop))
>
> (loop)
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
-- 
-=[     Jay McCarthy               http://jeapostrophe.github.io    ]=-
-=[ Associate Professor        PLT @ CS @ UMass Lowell     ]=-
-=[ Moses 1:33: And worlds without number have I created; ]=-

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to