如何在Racket中使用TCP?

时间:2014-02-06 09:33:17

标签: tcp scheme racket

我试图从客户端向服务器发送消息,并在服务器上打印消息。

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消息。

为什么?以及如何正确地做到这一点?

1 个答案:

答案 0 :(得分:6)

发送邮件后,您需要使用flush-output在客户端刷新输出。 在客户端和服务器上使用后,不要忘记使用close-input-portclose-output-port干净地关闭端口。

编辑:要回答问题的第一部分,您会得到#<eof>,因为您的客户端在刷新输出端口之前完成,这会关闭此输出端口,从而关闭服务器接收此文件结束消息(但在此处表示“流结束”),您可以使用eof-object?进行测试。