Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 如何获得连接的客户端';谁的IP地址?_Sockets_Stream_Server_Factor Lang - Fatal编程技术网

Sockets 如何获得连接的客户端';谁的IP地址?

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> "

如果我有一个超级简单的线程化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 ;
使用:访问器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