Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4582 connectés 

 


Dernière réponse
Sujet : [C/C++ sous Unix] Manipuler les IPs
mrbebert

juju_le_barbare a écrit a écrit :

 
 
oui bien sur,
 
en tout cas inet_addr et inet_ntoa marchent au poil, le pire c'est que je connaissais déjà ces fonctions, que je suis con :hap:  



Attention au format du résultat. Dans les fonctions liées au réseau, il y a toujours un problème de little endian/big endian.
Si le dernier chiffre de l'IP correspond bien à l'octet de poids faible, ca ira pour faire la boucle.


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
mrbebert

juju_le_barbare a écrit a écrit :

 
 
oui bien sur,
 
en tout cas inet_addr et inet_ntoa marchent au poil, le pire c'est que je connaissais déjà ces fonctions, que je suis con :hap:  



Attention au format du résultat. Dans les fonctions liées au réseau, il y a toujours un problème de little endian/big endian.
Si le dernier chiffre de l'IP correspond bien à l'octet de poids faible, ca ira pour faire la boucle.

juju_le_barbare

HelloWorld a écrit a écrit :

Citation :

Tu convertis chaque IP en 1 entier (4 valeurs comprises entre 0 et 255, c'est pile poil un entier 32 bits), et tu fais une simple boucle entre les 2 valeurs.


 
Oui, pour ipv4 ...




 
oui bien sur,
 
en tout cas inet_addr et inet_ntoa marchent au poil, le pire c'est que je connaissais déjà ces fonctions, que je suis con :hap:

HelloWorld

Citation :

Tu convertis chaque IP en 1 entier (4 valeurs comprises entre 0 et 255, c'est pile poil un entier 32 bits), et tu fais une simple boucle entre les 2 valeurs.


 
Oui, pour ipv4 ...

juju_le_barbare

mrbebert a écrit a écrit :

Tu convertis chaque IP en 1 entier (4 valeurs comprises entre 0 et 255, c'est pile poil un entier 32 bits), et tu fais une simple boucle entre les 2 valeurs.




 
salut,
 
c'est en effet ce que je voulais faire, mais je voulais être sûr qu'une fonction ou une structure ne permettait pas d'abord de faire ce que je demande.
Je vais donc voir avec inet_addr et inet_ntoa (qui existent bien sous Linux)
 
Merci à vous  :hello:

mrbebert Tu convertis chaque IP en 1 entier (4 valeurs comprises entre 0 et 255, c'est pile poil un entier 32 bits), et tu fais une simple boucle entre les 2 valeurs.
antp inet_addr (et sa réciproque inet_ntoa)
il me semble que ça existe sous Linux aussi donc ça doit être standard...
juju_le_barbare no idea ???
 
 :)
juju_le_barbare Bonjour,
 
Imaginons le cas où j'ai un réseau de 400 ordinateurs par exemple, le premier ayant l'IP 192.168.0.0, le dernier 192.168.1.145 (je vous rassure je n'ai que 2 ordis en réseau ;)
 
Chaque ordinateur a une IP entre ces 2 citées ci-dessus.
Chaque ordinateur a aussi un serveur de lancé sur le port 9000 par exemple.
 
Admettons que je sois sur le premier ordinateur, le routeur par exemple (192.168.0.O), et que je veuille lancer un client qui se connecte au 2 eme, envoie des ordres, puis se deconnecte, et se reconnecte au 3eme, et ainsi de suite jusqu'au 400 eme.
 
J'aimerai donc en indiquant la 2eme IP (192.168.0.1) et la dernière (192.168.1.145) (de type char * dynamique) pouvoir avoir chacune des IPs situées entre (dans une liste de char *, ou bien les unes après les autres, n'importe).
 
J'ai bien une solution, qui consiste en la concaténation des 4 parties de l'IP en hexa, puis à l'extraction avec un modulo 256, mais j'aimerai savoir si il existe pas une fonction du C (et s'il vous plaît une fonction standard, pas de conio.h et autres windowseries) qui permette la manipulation des IPs, ou bien une astuce avec les structures hostent ou sockaddr_in qui permette d'incrémenter le champ qui contient l'IP par exemple.
 
 
Merci beaucoup !!!

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)