使用tcp accept获取连接客户端信息?
在端口12321上运行的echo服务器非常简单:使用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))
(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)
短。