J’ai une application Spring MVC, qui fonctionne en réseau local. Dans ces machines client, les adresses IP changent de temps en temps. Par conséquent, je veux obtenir les noms des machines clientes (le nom de leur machine est fixe), car je veux obtenir les détails de la machine client sans créer de connexion.
Est-ce possible d’obtenir le nom de la machine cliente? si c’est possible comment ?? Ou existe-t-il un autre moyen d’obtenir ces informations utilisateur?
Edit: codes que j’ai essayés jusqu’ici
Dans HttpServlet
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { Ssortingng hostname = request.getRemoteUser(); //this gives null Ssortingng hostname = request.getRemoteHost(); //This gives host machine name }
Edit: répondre à @Eugeny Loy In web.xml
jcifs.smb.client.username username
Dans la classe serverlet
Ssortingng username = config.getInitParameter("username");//This gives client IP address
J’ai trouvé le moyen d’obtenir le nom de la machine cliente.
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { Logger.getLogger(this.getClass()).warning("Inside Confirm Servlet"); response.setContentType("text/html"); Ssortingng hostname = request.getRemoteHost(); // hostname System.out.println("hostname"+hostname); Ssortingng computerName = null; Ssortingng remoteAddress = request.getRemoteAddr(); System.out.println("remoteAddress: " + remoteAddress); try { InetAddress inetAddress = InetAddress.getByName(remoteAddress); System.out.println("inetAddress: " + inetAddress); computerName = inetAddress.getHostName(); System.out.println("computerName: " + computerName); if (computerName.equalsIgnoreCase("localhost")) { computerName = java.net.InetAddress.getLocalHost().getCanonicalHostName(); } } catch (UnknownHostException e) { } System.out.println("computerName: " + computerName); }
Est-ce possible d’obtenir le nom de la machine cliente?
Vous faites probablement référence au nom NetBIOS ici. Si tel est le cas – vous devez utiliser une bibliothèque qui implémente NetBIOS / SMB / CIFS dans Java pour ce faire.
si c’est possible comment ??
Jetez un coup d’œil à JCIFS . Je ne vous donnerai pas l’extrait de code exact, mais c’est la direction que vous devez suivre pour résoudre ce problème.
Ou existe-t-il un autre moyen d’obtenir ces informations utilisateur?
Pour autant que je comprenne votre problème, ce dont vous avez besoin est un moyen d’identifier l’hôte et vous ne pouvez pas compter sur l’adresse IP pour cela.
Si tel est le cas, l’une des autres options consisterait à utiliser une adresse MAC, mais vous ne pourrez probablement pas le faire avec pure java car il s’agit d’un protocole de bas niveau auquel Java traite normalement, il sera donc probablement moins portable. Ce tutoriel pourrait vous aider.
METTRE À JOUR
Je trouve la stack NetBIOS / SMB / CIFS mais je n’ai pas travaillé avec Java et JCIFS . C’est pourquoi je ne vous donnerai pas de code spécifique qui résoudra votre problème, mais plutôt la direction à suivre.
Découvrez les documents de la classe NbtAddress . Semble être ce que vous recherchez. Consultez également les exemples pour savoir comment l’utiliser.