如果我有一个超级简单的线程TCP服务器,如:
USING: accessors io io.encodings.utf8 io.servers
io.sockets kernel prettyprint threads ;
: handle-client ( -- )
remote-address . ;
: <my-server> ( -- threaded-server )
utf8 <threaded-server>
"server" >>name
1234 >>insecure
[ handle-client ] >>handler ;
: start-my-server ( -- )
<my-server> [ start-server ] in-thread start-server drop ;
这只会将文本remote-address
打印到客户端,非常非常有帮助。那是因为remote-address
是一个符号......它的价值在哪里?
remote-address
的{{3}}说:
变量保存当前客户端连接的地址说明符。
<threaded-server>
上的文档说:
线程服务器实例的处理程序槽应设置为a 处理客户端连接的报价。运行客户端处理程序 他们自己的线程,以下变量反弹:
•输入流
•输出流
•本地地址
•远程地址
•线程服务器
大!这意味着我可以获得客户的IP。
然后它链接到documentation,这似乎是相关的,但没有清楚地解释如何从remote-address
获取数据。
如何获取客户的IP地址?
答案 0 :(得分:1)
@fede s.在评论中将其钉住:get
将获取variable
和get
的值。
所以我的问题代码变成了:
: handle-client ( -- )
remote-address get host>> print flush ;
: <my-server> ( -- threaded-server )
utf8 <threaded-server>
"server" >>name
1234 >>insecure
[ handle-client ] >>handler ;
: start-my-server ( -- )
<my-server> [ start-server ] in-thread start-server drop ;