Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the remote IP-Address of clients connecting to a Rebol3 based server?

Tags:

tcp

rebol

rebol3

I'm playing with these basic TCP test scripts and would like to know: "How to get the IP-Address of clients connecting to the server?"

Any ideas? I tried to probe a client subport at the server-side, but it doesn't show the remote-ip.

Can someone give me hints on gathering that information. I know how it works within Rebol2, but I'm not familiar with the Rebol3 port model.

like image 359
TGD Avatar asked Aug 23 '13 08:08

TGD


1 Answers

You can obtain that information by calling QUERY on the client port!, which will return an object with remote-ip and remote-port fields.

Here's a simple example illustrating this, with a simple service that listens for connections on port 9090 and prints the address of clients connecting to that service:

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
like image 110
earl Avatar answered Sep 28 '22 01:09

earl