2013-08-23 4 views
5

these basic TCP test scripts으로 놀고 있는데 알고 싶습니다. "서버에 연결하는 클라이언트의 IP 주소를 얻는 방법"Rebol3 기반 서버에 연결하는 클라이언트의 원격 IP 주소를 얻으려면 어떻게해야합니까?

아이디어가 있으십니까? 서버 측에서 클라이언트 서브 포트를 조사하려고 시도했지만 remote-ip를 표시하지 않습니다.

누군가 내게 정보 수집에 대한 힌트를 줄 수 있습니까? Rebol2에서 어떻게 작동하는지는 알고 있지만 Rebol3 포트 모델에 익숙하지 않습니다.

답변

4

클라이언트의 port!에서 QUERY를 호출하면 해당 정보를 얻을 수 있습니다. remote-ipremote-port 필드가있는 개체가 반환됩니다.

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 
: 여기

해당 서비스에 접속하는 클라이언트의 어드레스 포트 9090에 대한 연결을 수신하고 인쇄하는 간단한 서비스 이것을 나타내는 간단한 예제
1

system/standard/net-info 객체에는 local-ip와 remote-ip의 두 값이 있습니다. 나는 그것이 그들이 설정되는지 여부를 모르겠다.

system/standard/net-info/remote-ip에 시도해보고 시도가 없으면 버그 보고서를 제출하는 것이 좋습니다.