Til det andet spørgsmål: ping benytter ICMP protokollen. For at kunne snakke ICMP skal du åbne en raw socket med protokollen IPPROTO_ICMP. Nu har du noget at starte med.
Se i øvrigt man siderne (med kommandoen man):
man raw man 7 icmp
Hvis du ikke har specielle krav til performance eller funktionalitet, vil det være væsentligt nemmere at bruge ping programmet, og simpelthen kalde det fra dit program. Helt simpelt:
bool ping(const std::string& targetHost, int timeOut = 2, int packets = 2) { std::ostringstream os; os << "ping " << targetHost << " -w " << timeOut << " -c " << packets << " >/dev/null 2>&1"; std::cout << os.str().c_str() << std::endl; int retval = system(os.str().c_str()); if (retval == -1) throw SystemCommandFailedError("Failed to ping '"+targetHost+"'"); return retval == 0; }
void testPing(const std::string& targetHost) { if (ping(targetHost)) std::cout << targetHost << " responded to ping" << std::endl; else std::cout << targetHost << " did not respond to ping" << std::endl; }
int main() { testPing("localhost"); testPing("169.0.0.5"); } ############## END
Held og lykke!
Thomas
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.