Tarvitsen ohjelman joka tulostaa: Verkkoyhteys toimii tai ei toimi. Eli tarkistaa pingillä tai toisella tavalla vastaako vaikka 192.168.1.1 vai ei ja tulostaa tuloksen.
Onnistuks c:lla ?
Onnistuks c:lla ?
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 8
Vanhimmat
miksi keksiä pyörää uudestaan? sopiva shell-skripti hoitaa saman asian.
Mikäli haluaa tehdä ohjeman, joka tarkastaa asian. Ilmeisesti voisi kutsua sitä ping ohjelmaa, ja napata sen outputin c-ohjkelman sisään...vai sitäkö juuri tarkoititkin.
Riittääkö tämä:
#!/bin/bash
if ping -w 5 $1 > /dev/null 2> /dev/null;
then echo "Yhteys toimii";
else echo "Yhteys ei toimi";
fi
Saman voi tehdä toki c-kielellä system() -funktiolla jos on tarvetta.
Kun kysymys esitettiin C-ohjelmointi-palstalla, olisi varmaan hauskaa tietää C-kielinen ratkaisu ongelmaan. System-funktion kutsuminen tai mikälieskripti on sama kuin "mä en tiedä" -vastaus.
Freshmeatissa on joku ping-library:
http://freshmeat.net/projects/libping/
kokeilkaa sillä.
Tuon shell-skriptin idea on siinä että sen saa helpommin toimimaan..
Tossa on linkki c-koodiin.
http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/ping/ping.c?rev=1.101&content-type=text/x-cvsweb-markup&only_with_tag=HEAD
Ja tuohon kun lisää sopivaan kohtaan
printf("Yhteys ei toimi\n"), niin ongelma on ratkaistu ;)
Vai olisikohan sittenkin parempi käyttää apuna jotain "mikälieskriptiä" tai "emmätiäsystemfunktiota"? ;)
Pingin salaisuus on siis Socket ja sendto() funktio. Nehän löytyvät myös Windowsista, eli koodi saattaisi jopa siirtyä sinne pienin muutoksin?
http://msdn.microsoft.com/library/en-us/winsock/winsock/sendto_2.asp?frame=true
Koodissa on ilkeästi käytetty globaaleja muuttujia. Ne kannattaa poistaa omaa ping-funktiota tehdessä.