2010-12-13 66 views
0

IP de mon ordinateur est 192.168.1.101 sur eth0.
Je veux savoir quelles sont les autres actifs/IP utilisé sous 192.168.1. *
J'attends une liste d'adresse IP qui est en mesure de ping-sous 192.168.1. *
Comment puis-je faire en C? Et de préférence dans la plate-forme Linux.
Toutes les fonctions C disponibles?Comment faire marcher IP dans C

+0

Etes-vous autorisé à envoyer une requête ping à l'adresse de diffusion sur votre réseau? – nmichaels

+0

Les adresses IP utilisées ne sont pas forcément pingables. Les pare-feu par machine peuvent bloquer les pings facilement. Vous pourriez obtenir de meilleures réponses si vous clarifiez * dans quel but * vous voulez cette information. – cdhowie

+2

http://nmap.org/ <- fait cela en C. – nmichaels

Répondre

1

Il n'y a pas de fonction intégrée dans C qui envoie un paquet ping. Il y a, cependant, une fonction qui envoie juste le paquet. Il y a aussi beaucoup de code sur internet qui implémente déjà ping.

Ce que vous avez à faire est simplement de prendre l'un d'entre eux (this par exemple) et ping dans une boucle pour toutes les adresses de votre réseau.

Vous devez savoir, cependant, que ping n'est pas un moyen fiable de dire quelles adresses sont utilisées. RFC 792 - Protocole de message de contrôle Internet dit:

Le protocole Internet n'est pas conçu pour être absolument fiable. Le but de ces messages de contrôle est de fournir des commentaires sur les problèmes dans l'environnement de communication , de ne pas rendre IP fiable. Il n'y a toujours aucune garantie qu'un datagramme sera livré ou qu'un message de contrôle sera retourné. Certains datagrammes peuvent encore être livrés sans aucun rapport de leur perte.

ce qui signifie que tout message peut être facilement perdu, sans notification. De plus, la cible n'a pas à répondre.