2012-10-17 41 views
0

我有一臺服務器程序正在我的電腦上運行。服務器程序使用套接字連接到許多客戶端。無論如何找出哪個客戶端與女巫IP隨時連接到服務器?或者有多少客戶連接到服務器?如何使用ServerSocket通過TCP找出連接的客戶端到服務器的IP數量(詳細信息)?

+0

你有哪種類型的服務器?是JEE嗎,使用像netty這樣的框架,還是你自己編寫了ServerSocket處理代碼? –

+0

@PeterLawrey我自己的ServerSocket。 – Bernard

+0

您需要在此處定義您的條款。如果要計算連接數,只需在接受計數器時遞增計數器並在關閉時遞減計數器。如果您想計算客戶端,則需要定義標識客戶端的標識。除非客戶端發送某種類型的UID,否則您所擁有的只是遠程對等地址,這可能是NAT設備的外部地址,後面有數百個客戶端,所以它並沒有真正的幫助。 – EJP

回答

1

是否有無論如何找出哪個客戶端與巫婆IP連接到服務器在任何時候[使用]我自己的ServerSocket。

當您接受套接字時,您可以獲取其遠程IP地址。

Sockets socket = serverSocket.accept(); 
SocketAddress address = socket.getRemoteSocketAddress(); 

如果有來自該IP連接多個客戶端,這是不夠的,有什麼區別。如果這是一個問題,您可以讓客戶端發送一個唯一的ID,以便知道它是哪個客戶端。

+0

感謝您的回覆。這是問題,因爲我需要從縫IP中找出客戶。有沒有什麼可以找出有多少客戶端連接到ServerSocket? – Bernard

+0

客戶端只連接到一個套接字。如果你想知道所有連接到套接字的客戶端,你需要將它們保存在一個集合中。 –

+1

一個「套接字」等於一個「連接」(或一個「收聽者」)。請注意,單個客戶端可以打開多個連接。 –

相關問題