[racket] What is racket/cmdline?
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.