2013-08-23 7 views
5

私はと遊んでいて、知りたいと思っています: "サーバーに接続するクライアントのIPアドレスを取得する方法?"Rebol3ベースのサーバーに接続するクライアントのリモートIPアドレスを取得するにはどうすればよいですか?

私は、サーバー側でクライアントのサブポートを調べようとしましたが、remote-ipは表示されません。

誰かが私にその情報を収集するヒントを教えてもらえますか?私はRebol2でどのように動作するのか知っていますが、私はRebol3ポートモデルに慣れていません。

答えて

4

この情報は、クライアントport!でQUERYを呼び出すことで取得でき、remote-ipremote-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の2つの値が含まれています。私は彼らが設定されているかどうかは分かりません。

system/standard/net-info/remote-ipに試してみてください。もしそれが含まれていなければ、バグレポートを提出することをお勧めします。

関連する問題