2014-02-11 93 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()的差异。