2013-08-23 3 views
5

Я играю с these basic TCP test scripts и хотел бы знать: «Как получить IP-адрес клиентов, подключающихся к серверу?»Как получить удаленный IP-адрес клиентов, подключающихся к серверу на основе Rebol3?

Любые идеи? Я попытался проверить клиентский субпорт на стороне сервера, но он не показывает remote-ip.

Может кто-нибудь дать мне подсказки по сбору этой информации. Я знаю, как это работает в Rebol2, но я не знаком с моделью портов Rebol3.

ответ

4

Вы можете получить эту информацию, вызвав QUERY на клиенте port!, который будет возвращать объект с полямии remote-port.

Вот простой пример, иллюстрирующий это, с простой сервис, который прослушивает соединения на порт 9090 и печатает адрес клиентов, подключенных к этой службе:

rebol [] 

awake-server: func [event /local client info] [ 
    if event/type = 'accept [ 
     client: first event/port 
     info: query client 
     print ajoin ["Client connected: " info/remote-ip ":" info/remote-port] 
     close client 
    ] 
] 

serve: func [endpoint /local listen-port] [ 
    listen-port: open endpoint 
    listen-port/awake: :awake-server 
    wait listen-port 
] 

serve tcp://:9090 
1

Объект system/standard/net-info включает в себя два значения - local-ip и remote-ip. Я не уверен, что они установлены.

Дайте системе/стандарту/net-info/remote-ip попробовать, и если в нем нет ни одного, я бы предложил отправить отчет об ошибке.