2012-07-13 77 views
0

我有一個RMI服務器和RMI客戶端。如果客戶端運行我製作的RMI版本並準備好接收連接,那麼即使客戶端沒有連接到我,服務器端如何獲取客戶端的IP /主機名?如何實現Java RMI以獲取未連接的客戶端ip /主機名

我想創建一個遠程方法,它會調用客戶端將他們的IP /主機名發送到我的服務器端,但這需要我知道要連接的客戶端IP /主機名才能調用該方法。

本課程的目的是創建一個監控程序,以監控學生在實驗室做什麼,作爲老師。

+0

「監控學生」?你到底需要知道什麼? – 2012-08-07 10:55:21

回答

1

即使客戶端沒有連接到我,服務器端如何獲取客戶端的IP /主機名?

這是一種自相矛盾的說法。如果沒有連接,則不存在當前客戶端。如果您希望在遠程方法調用期間使用當前客戶端,請參閱RemoteServer.getClientHost()。如果您想要遠程方法調用期間以外的數據,您可以在遠程方法調用期間收集數據,但是您將很難決定何時刪除客戶端,除非客戶端有義務調用方法logout()或其他方法。如果有幫助,您可以在Unreferenced.unreferenced()方法中完全清除收集。但是你需要徹底擺脫RMI中'連接'的概念。基本上沒有這樣的事情。連接在調用期間存在,並且在實現需要的任何額外範圍內存在,但無法在服務器或客戶端中獲得它們,因此您可以像設計不存在一樣進行設計,並且作爲儘管除了遠程調用期間客戶端不存在。

或者用我的遠程會話模式,嘗試谷歌。

+0

謝謝你的解釋清除了我在java RMI中的一些誤解。我現在正考慮允許RMI服務器從一系列用戶定義的IP執行遠程調用。這樣,如果我能夠調用該方法,這意味着我可以調用將來的調用。這是可行的嗎? – sutoL 2012-07-13 13:41:21

+0

@kyrogue我不明白這個問題;我不明白遠程IP地址與監控學生在沒有「連接」時正在做什麼有關;在我看來,你有'客戶'和'服務器'回字體。它是接收連接的服務器,而不是客戶端。我認爲你需要坐下來更清楚地重新定義你的問題。 – EJP 2012-07-13 17:37:18