The asymmetry between what your client is reading and what your server is writing looks very suspicious. Your client is using the read function, but your server is using display.
Those two functions are not designed to be paired. There's no guarantee that what you're "display"ing as a server is "read"able from the client side. It's likely that it will not. Take a look at: http://docs.racket-lang.org/guide/read-write.html I think you intend to use "write" and "read", not "display" and "read". Here is a concrete example of what can go wrong if you don't correctly pair them: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #lang racket (define val (list "(hi" "bye")) (define op (open-output-string)) (display val op) (define ip (open-input-string (get-output-string op))) ;; The following will fail: (read ip) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Replace the call of "display" to "write", and compare the behavior. ____________________ Racket Users list: http://lists.racket-lang.org/users