2013-05-31 41 views
0

我正在嘗試編寫一個Java程序,將數據從Beta測試計算機發送到我的。我使用序列化將數據保存到他們的計算機,現在我需要獲取它並將其存儲在數據庫中。爲此,我需要他們的IP地址。 (我也將需要它爲他們生成一個用戶ID。)這是因爲,在做這一切,我會成爲客戶端(sending serialization file via sockets in java),他們將是服務器。當然,在客戶端 - 服務器交互中,我需要知道他們的IP地址。爲了規避這個問題,我決定讓它們成爲客戶端(並請求知道我的IP地址或其他信息),然後我作爲服務器請求他們的IP地址。當我有他們的IP地址時,我可以向他們請求信息並將其存儲到數據庫中。通過Java中的雙向客戶端 - 服務器交互發送IP地址

有關如何解決這個問題的任何建議?

+1

你可以編寫一個程序,等待數據發送給它,不需要跳過箍。 – Femaref

+0

這隻會涉及一個客戶端和一個服務器,對吧?另外,您是否還需要知道服務器的IP地址(或其主機名:http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html)? //雖然我必須說,這是天才,並且會得到我的+1。 –

+0

這是正常的客戶端/服務器體系結構,任何網絡服務器(以及許多其他應用程序)都是這樣工作的。等待連接,處理它(例如叉),等待下一個。 – Femaref

回答

1

你只需要一個程序來偵聽某個端口上的連接,並處理髮送給它的數據。發送數據的程序必須知道主機名或IP地址才能啓動與該程序的連接。

偵聽連接的程序是服務器,啓動連接的程序是客戶端。與誰發送數據無關。

+0

'this-> isGoodAnswer();'用戶[Aniket Thakur] [someUser]讓我在這裏擔心(請參閱我在我的問題中發佈的問題的鏈接)。我把他的名字聯繫起來,以便他能看到這一點。 [someUser]:http://stackoverflow.com/users/2396539/aniket-thakur/ –

+0

這樣,我可以讓這個程序運行在所有時間,監聽數據。至於獲取他們的IP地址(這不會是我可能爲用戶生成一個用戶ID的唯一方式),我們可以做一些事情,比如[在這裏] [firstLink],是吧? [firstLink]:http://www.codereye.com/2010/01/get-real-ip-from-request-in-java.html/ –

+1

請記住,IP地址可以並將改變。例如,我的ISP會重新分配我的知識產權(消費者,而不是商業合同)。 – Femaref

相關問題