私はと遊んでいて、知りたいと思っています: "サーバーに接続するクライアントのIPアドレスを取得する方法?"Rebol3ベースのサーバーに接続するクライアントのリモートIPアドレスを取得するにはどうすればよいですか?
私は、サーバー側でクライアントのサブポートを調べようとしましたが、remote-ipは表示されません。
誰かが私にその情報を収集するヒントを教えてもらえますか?私はRebol2でどのように動作するのか知っていますが、私はRebol3ポートモデルに慣れていません。
私はと遊んでいて、知りたいと思っています: "サーバーに接続するクライアントの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の2つの値が含まれています。私は彼らが設定されているかどうかは分かりません。
system/standard/net-info/remote-ipに試してみてください。もしそれが含まれていなければ、バグレポートを提出することをお勧めします。