2014-02-11 91 views
0

在「接受」連接之前,有沒有辦法在服務器端獲取客戶端名稱?使用java。套接字編程客戶端名稱

我是新來的java。

在此先感謝..

+2

我相信你必須先接受,但你可以隨時關閉服務器的連接。因此,請接受,獲取您的客戶信息,並根據您的應用程序邏輯規定保持開放或關閉。 –

+2

可能的重複[如何從Java中的套接字獲取客戶端名稱?](http://stackoverflow.com/questions/5112325/how-do-i-get-the-client-name-from-a- socket-in-java) –

+0

@Hovercraft Full Of Eels。,我的程序邏輯是......客戶端在服務器接受請求時得到消息,但在服務器中我實際上想驗證「客戶端名稱」 – Akhil

回答

0

有沒有什麼辦法讓客戶端名稱與之前的服務器端的「接受」的連接?

否 - 您必須先接受連接。然後您可以閱讀主持人的姓名並選擇下一步行動。

Socket client = server.accept(); 
String hostName = client.getInetAddress().getHostName(); 
0

只能從Socket客戶端獲得客戶端名稱(客戶端主機名),所以您需要先接受它,然後才能做出相應的反應。

private static final String ALLOWED_NAME = "my.hostname.com"; 

.... 

Socket client = server.accept(); 
String hostName = client.getInetAddress().getCanonicalHostName(); 

if(hostName.equalsIgnoreCase(ALLOWED_NAME) 
{ 
    // DO NOTHING 
} 
else 
{ 
    client.close(); 
} 

參考:

請一定要得到之間getCanonicalHostname()和getHostname()的差異。