2013-08-23 9 views
5

Ich spiele mit these basic TCP test scripts und würde gerne wissen: "Wie bekomme ich die IP-Adresse von Clients, die mit dem Server verbinden?"Wie erhalte ich die Remote-IP-Adresse von Clients, die eine Verbindung zu einem Rebol3-basierten Server herstellen?

Irgendwelche Ideen? Ich habe versucht, einen Client-Unterport auf der Serverseite zu untersuchen, aber es zeigt nicht die Remote-IP.

Kann mir jemand Hinweise geben, diese Informationen zu sammeln. Ich weiß, wie es in Rebol2 funktioniert, aber ich kenne das Rebol3-Port-Modell nicht.

Antwort

4

Sie können diese Informationen abrufen, indem Sie QUERY auf dem Client port! aufrufen, der ein Objekt mit den Feldern remote-ip und remote-port zurückgibt.

Hier ist ein einfaches Beispiel das darstellt, mit einem einfachen Dienst, der zu diesem Dienst verbinden Verbindungen auf Port 9090 und druckt die Adresse des Kunden zuhört:

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

Das Objekt system/standard/net-info enthält zwei Werte - local-ip und remote-ip. Ich bin mir nicht sicher, ob sie sich aber festlegen.

Gib System/Standard/net-info/remote-ip einen Versuch und wenn es keine enthält, würde ich vorschlagen, einen Fehlerbericht einzureichen.