使用tcp accept获取连接客户端信息?

使用tcp accept获取连接客户端信息?,tcp,racket,Tcp,Racket,在端口12321上运行的echo服务器非常简单: (define listener (tcp-listen 12321)) (define (mk-server) (let echo-server () (define-values (in out) (tcp-accept listener)) (thread (λ () (copy-port in out) (close-output-port out))) (echo-server))

在端口12321上运行的echo服务器非常简单:

(define listener (tcp-listen 12321))
(define (mk-server)
  (let echo-server ()
    (define-values (in out) (tcp-accept listener))
    (thread (λ () (copy-port in out)
              (close-output-port out)))
    (echo-server)))
有很多用于
tcp-
的函数,但它们都返回
boolean?
tcp侦听器?
;我不知道哪一个会给我连接客户端的IP地址

还只提到处理客户机发送的数据

上例中中的端口将包含客户端发送的所有数据(标头等),但不包含有关客户端的元数据

例如,在中,
对象的
accept
方法返回用于写入/读取的双向流和数据元组:

T{ inet4 { host "127.0.0.1" } { port 36150 } }

其思想是使用端口
in
读取从客户端发送的数据,写入
out
的数据自动发送到客户端

如果我正确阅读了文档,请执行以下操作之一:

(tcp-addresses in)
(tcp-addresses out) 

应该给你客户地址

我尝试使用
(中的tcp地址)
执行的任何操作都会给出
未收到的预期值数预期值:1收到:2个值…:
,我不明白这一点--它需要1个参数,我给了它1@cat尝试
(tcp地址输入f)
(tcp地址输出f)
相反。同样的错误——问题不在于它得到的参数数量,而在于返回值,但是执行
(list(tcp地址在#f中))
也会给出一个错误。啊!。使用
(定义值(val1 val2)(中的tcp地址))
接收两个值。高尔夫!提示:
~a
number->string
短,
(换行)
(write\n out)
短。