_ 2.3 Raw sockets och ICMP Vi ska nu titta på en typ av sockets, raw sockets, där man själv kan speca allt om hur paketen man sänder iväg ska se ut. Dessa typer av sockets finns av säkerhetsskäl inte med i Java utan man måste anropa (via JNI) program skrivna i C. Det här är mycket svårt eftersom man måste kunna allt på en låg nivå (och läsa RFC:er med mera) men man kan bygga många användbara, roliga, spännande och farliga :-) saker. __ Uppgift Gör ett program som implementerar ping, traceroute eller något annat nätverksprogram som använder ICMP eller något som man inte kan göra i standardversionen av Java. Man ska inte anropa motsvarande funktioner i operativsystemet via exempelvis: § Runtime.getRuntime().exec("myprog.exe") § utan man ska använda ett Java-paket som anropar C-kod som implementerar raw sockets. __ Exempel Ett enkelt exempel för Windows kan köras enligt följande: = Hämta filen: §[jicmp.dll, 05_ass/ip1/2/2.3/jicmp.dll]§ = Hämta filen: §[jicmp.jar, 05_ass/ip1/2/2.3/jicmp.jar]§ = Hämta filen: §[Ping.class, 05_ass/ip1/2/2.3/Ping.class]§ = Kör programmet med: §java -classpath jicmp.jar;. Ping § Med JSE 5.0+ kan man göra £vissa£ saker utan tillbehör: = Hämta filen §[Ping.class, 05_ass/ip1/2/2.3/jdk1.5/Ping.class]§ = Kör programmet med: §java Ping § Exempelvis: § java Ping 127.0.0.1 § Detta program är gjort med hjälp av klassen §InetAddress§ och metoden §isReachable§. __ Tips Använd ett redan existerande API, exempelvis [Jpcap, https://sourceforge.net/projects/jpcap/]. __ Hjälp ~ 05_ass/help/01.txt > [Klicka här för hjälp, helper.dsv@gmail.com, Prog Internet: 2.3 Raw sockets och ICMP: http://people.dsv.su.se/~pierre/i/i.cgi?href=05_ass/ip1/2.3.txt] ½===system_tutoring_message===½ < ~ 05_ass/help/02.txt