我在玩these basic TCP test scripts,想知道:「如何獲取連接到服務器的客戶端的IP地址?」如何獲取連接到基於Rebol3的服務器的客戶端的遠程IP地址?
任何想法?我試圖在服務器端探測客戶端子端口,但它不顯示remote-ip。
有人可以給我提示收集該信息。我知道它在Rebol2中是如何工作的,但我不熟悉Rebol3端口模型。
我在玩these basic TCP test scripts,想知道:「如何獲取連接到服務器的客戶端的IP地址?」如何獲取連接到基於Rebol3的服務器的客戶端的遠程IP地址?
任何想法?我試圖在服務器端探測客戶端子端口,但它不顯示remote-ip。
有人可以給我提示收集該信息。我知道它在Rebol2中是如何工作的,但我不熟悉Rebol3端口模型。
您可以通過在客戶端port!
上調用QUERY來獲取該信息,該查詢將返回一個包含remote-ip
和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
system/standard/net-info對象包含兩個值 - local-ip和remote-ip。我不確定他們是否得到確定。
給system/standard/net-info/remote-ip一個試試看,如果它不包含,我會建議提交一個bug報告。