我试图从客户端向服务器发送消息,并在服务器上打印消息。
server.rkt:
#lang racket
(define the-listener (tcp-listen 9876))
(define-values (in out) (tcp-accept the-listener))
(displayln (read in))
(tcp-close the-listener)
client.rkt:
#lang racket
(define-values (in out) (tcp-connect "localhost" 9876))
(write "Hello" out)
我在终端中运行server.rkt
然后client.rkt
。但是服务器只打印#<eof>
而不是Hello
消息。
为什么?以及如何正确地做到这一点?
答案 0 :(得分:6)
发送邮件后,您需要使用flush-output
在客户端刷新输出。
在客户端和服务器上使用后,不要忘记使用close-input-port
和close-output-port
干净地关闭端口。
编辑:要回答问题的第一部分,您会得到#<eof>
,因为您的客户端在刷新输出端口之前完成,这会关闭此输出端口,从而关闭服务器接收此文件结束消息(但在此处表示“流结束”),您可以使用eof-object?
进行测试。