2 votes

Pourquoi la fonction getRemoteAddr() renvoie-t-elle une adresse IP sous forme de chaîne de caractères ?

Y a-t-il une raison pour que ServletRequest.getRemoteAddr() renvoie l'adresse IP du client sous la forme d'une chaîne de caractères plutôt que sous la forme d'une int/long/IPSomethingInstance ?

Ou bien d'une autre manière : Existe-t-il un cas où la valeur retournée par getRemoteAddr() ne peut pas être analysée comme une adresse IP numérique ?

Renvoyer une adresse IP sous forme de chaîne de caractères, puis demander au développeur de la traduire en adresse ipV4/IpV6 me semble être une mauvaise conception, à moins qu'il n'y ait vraiment des cas où la méthode renvoie autre chose qu'une chaîne de caractères.

3voto

Bozho Points 273663

Cette méthode est un équivalent direct de la variable CGI. REMOTE_ADDR Je suppose donc que c'est la raison pour laquelle il s'agit d'une ficelle. Quant à la raison pour laquelle la variable CGI est une chaîne de caractères, je l'ignore.

0voto

Oli Charlesworth Points 148744

Sans doute par souci de cohérence avec getRemoteHost() qui peut renvoyer une adresse IP ou un nom résolu.

0voto

Ryan Stewart Points 46960

Si un conteneur renvoie autre chose qu'une adresse IP à partir de ServletRequest.getRemoteAddr() il n'est pas conforme à l'API :

"Returns the Internet Protocol (IP) address of the client
 or last proxy that sent the request."

Je ne peux que supposer qu'il en est ainsi parce que les classes java.net peuvent être un peu bizarres.

0voto

MikeG Points 2217

Je reconnais qu'il serait pratique de renvoyer l'adresse sous forme d'objet, ce qui permettrait de disposer de méthodes utiles pour traiter les adresses IP.

String fonctionne très bien et est plus flexible pour les changements de formats d'adresses IP à l'avenir (bien qu'il s'agisse d'une conception spéculative, ce qui n'est probablement pas une bonne pratique).

0voto

DarkDragon1993 Points 23

Je dirais qu'il est impossible que l'IP soit numérique puisque les différentes parties de l'IP sont séparées par des points et des deux-points (IPv6). Je suppose que vous parlez de Java. Malheureusement, je ne connais pas grand-chose à Java, et je ne sais donc pas s'il existe une solution. IPSomethingInstance . Mais si cela vous dérange à ce point, pourquoi ne pas écrire votre propre texte ?

Je suppose également qu'il est plus facile de transmettre une chaîne de caractères aux fonctions et méthodes prenant un PI en paramètre qu'une instance d'un objet natif plutôt inutile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X