我试图从客户端向服务器发送消息,并在服务器上打印该消息。
服务器.rkt:
#lang racket
(define the-listener (tcp-listen 9876))
(define-values (in out) (tcp-accept the-listener))
(displayln (read in))
(tcp-close the-listener)
客户端.rkt:
#lang racket
(define-values (in out) (tcp-connect "localhost" 9876))
(write "Hello" out)
I ran server.rkt
进而client.rkt
在终端中。但服务器只打印#<eof>
而不是Hello
信息。
这是为什么?以及如何正确地做到这一点?
您需要刷新客户端的输出flush-output http://docs.racket-lang.org/reference/port-buffers.html#%28def._%28%28quote._~23~25kernel%29._flush-output%29%29发送消息后。
不要忘记彻底关闭端口close-input-port
and close-output-port
使用后,在客户端和服务器上也是如此。
Edit:要回答问题的第一部分,您可以得到#<eof>
因为您的客户端在其输出端口被刷新之前完成,这会关闭该输出端口,因此服务器会收到此文件结束消息(但在这里意味着“流结束”),您可以使用它进行测试eof-object? http://docs.racket-lang.org/reference/port-ops.html#%28def._%28%28quote._~23~25kernel%29._eof-object~3f%29%29.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)