Ciao, sto cercando di realizzare un semplice traceroute usando i pacchetti udp e icmp di ritorno, putroppo il programma si blocca (resta fermo) al momento della ricezione degli icmp. Ho già provato a impostare windows firewall consentendo ogni protocollo in ingresso al programma, ma niente. Eppure utilizzando wireshark il primo pacchetto icmp arriva. E' un problema nel codice oppure un problema delle raw socket windows o del firewall?
codice:Imports System Imports System.Net Imports System.Net.Sockets Imports System.Text Module Module1 Sub Main() Dim tt As Short Dim udpClient As New UdpClient(11000) Dim rawSocket As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp) Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0) Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("prova") Dim receive(256) As Byte tt = 1 rawSocket.Bind(RemoteIpEndPoint) Try While tt<=30 udpClient.Ttl = tt udpClient.Send(sendBytes, sendBytes.Length, "google.it", 5005) rawSocket.ReceiveFrom(receive, RemoteIpEnd) Dim returnData As String = Encoding.ASCII.GetString(receive) Console.WriteLine(RemoteIpEndPoint.Address.ToString()) If RemoteIpEndPoint.Address.ToString = "216.58.198.35" Then Exit While End If tt = tt + 1 End While udpClient.Close() Catch e As Exception Console.WriteLine(e.ToString()) End Try End Sub End Module

Rispondi quotando