Sockets 如何获得连接的客户端';谁的IP地址?
如果我有一个超级简单的线程化TCP服务器,如:Sockets 如何获得连接的客户端';谁的IP地址?,sockets,stream,server,factor-lang,Sockets,Stream,Server,Factor Lang,如果我有一个超级简单的线程化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> "
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 ;
使用:访问器io.encodings.utf8 io.servers
io.sockets内核预打印线程;
:句柄客户端(--)
远程地址;
:(-线程服务器)
utf8
“服务器”>>名称
1234>>不安全
[处理客户端]>>处理程序;
:启动我的服务器(--)
线程启动服务器放置中的[启动服务器];
这将只向客户端打印文本远程地址
,这非常有用。这是因为远程地址是一个符号。。。它的价值在哪里?
远程地址的
显示:
包含当前客户端连接的地址说明符的变量
而
上的文档说:
线程服务器实例的处理程序插槽应设置为
处理客户端连接的报价单。客户端处理程序在中运行
他们自己的线程,具有以下变量:
•输入流
•输出流
•本地地址
•远程地址
•线程服务器
太好了!这意味着我可以获得客户的IP
然后它链接到,这似乎是相关的,但没有清楚地解释如何从远程地址获取数据
如何获取客户的IP地址?将其固定在注释中:将获取变量
和获取其值
因此,我的问题代码变成:
: 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 ;
:处理客户端(--)
远程地址获取主机>>打印刷新;
:(-线程服务器)
utf8
“服务器”>>名称
1234>>不安全
[处理客户端]>>处理程序;
:启动我的服务器(--)
线程启动服务器放置中的[启动服务器];
如果它是一个绑定到值的符号(使用变量:P),您不应该获取它吗?这给了你什么?@fedes。。。。。。。facepalm哦,这就是为什么。回答这个问题:老实说,PI从来没有真正费心去弄清楚get
是做什么的,现在我明白了。呵呵。你做了所有的工作,如果你把它贴出来会是一个更好的答案!哈哈,好吧,我应该告诉你我是如何花了一个多小时,几乎贴出一个问题,因为我看不到我错过了一个空间;P显而易见的事情有时更难看到,对吧?你应该接受这个答案,这是迄今为止最好的答案@联邦快递。xD SE总是告诉我“你可以在24小时内接受这个答案”,然后我离开了,完全忘记了24小时后我可以接受自己的答案。谢谢你提醒我:P