Ho modificato un codice trovato sul web per eseguire un ping verso un'indirizzo specificato in una textbox1. Il programma è scritto in c# .net e presenta un problema durante l'esecuzione. Il ping verso il sito viene eseguito per 10 volte, succede però che nel risultato (stampato in un textbo2) certe volte compare come tempo impiegato <1ms. Il test viene eseguito verso maya.ngi.it.
ecco qui due esempi con il programma e con ping.execodice:private void ping() { byte[] data = new byte[1024]; int recv, timestart, timestop; //creo socket pe comunicazione Socket host = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp); IPHostEntry iphe = Dns.GetHostEntry(textBox1.Text); IPEndPoint iep = new IPEndPoint(iphe.AddressList[0], 0); EndPoint ep = (EndPoint)iep; //creo pacchetto da inviare ICMP packet = new ICMP(); packet.Type = 0x08; packet.Code = 0x00; packet.Checksum = 0; Buffer.BlockCopy(BitConverter.GetBytes(1), 0, packet.Message, 0, 2); Buffer.BlockCopy(BitConverter.GetBytes(1), 0, packet.Message, 2, 2); data = Encoding.ASCII.GetBytes("aaaabbbb"); Buffer.BlockCopy(data, 0, packet.Message, 4, data.Length); packet.MessageSize = data.Length + 4; int packetsize = packet.MessageSize + 4; UInt16 chcksum = packet.getChecksum(); packet.Checksum = chcksum; textBox2.Text = "Inizio ping verso: " + ep.ToString() + "\r\n"; host.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 3000); int badcount = 0; string time = ""; //invio il comando per il ping per 10 volte for (int i = 0; i < 10; i++) { host.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.IpTimeToLive, 35); host.SendTo(packet.getBytes(), packetsize, SocketFlags.None, iep); //misuro il tempo impiegato timestart = Environment.TickCount; //attendo una risposta try { data = new byte[1024]; recv = host.ReceiveFrom(data, ref ep); timestop = Environment.TickCount; ICMP response = new ICMP(data, recv); if ((timestop - timestart) < 1) { time = "<1"; } else { time = (timestop - timestart).ToString(); } //stampo il risultato if (response.Type == 0 ) { textBox2.Text = textBox2.Text + " response from " + ep.ToString() + ", " + time + "ms \r\n"; //label1.Text = label1.Text + ep.ToString() + " riched in " + i + " hops " + totaltime + "ms \n"; } badcount = 0; } catch (SocketException) { textBox2.Text = textBox2.Text + "no response \r\n"; badcount++; if (badcount == 5) { textBox2.Text = textBox2.Text + "no response host \r\n"; } } } host.Close(); }
Inizio ping verso: 88.149.128.3:0
response from 88.149.128.3:0, <1ms
response from 88.149.128.3:0, 31ms
response from 88.149.128.3:0, <1ms
response from 88.149.128.3:0, 32ms
response from 88.149.128.3:0, <1ms
response from 88.149.128.3:0, 15ms
response from 88.149.128.3:0, 16ms
response from 88.149.128.3:0, 15ms
response from 88.149.128.3:0, 16ms
response from 88.149.128.3:0, 16ms
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Daniele>ping maya.ngi.it
Pinging maya.ngi.it [88.149.128.3] with 32 bytes of data:
Reply from 88.149.128.3: bytes=32 time=14ms TTL=53
Reply from 88.149.128.3: bytes=32 time=13ms TTL=53
Reply from 88.149.128.3: bytes=32 time=14ms TTL=53
Reply from 88.149.128.3: bytes=32 time=12ms TTL=53
Ping statistics for 88.149.128.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 12ms, Maximum = 14ms, Average = 13ms
Dov'è che sbaglio?? GRazie

Rispondi quotando
