Usando .NET, ¿cómo puedo escuchar los paquetes de difusión udp enviados a .255 en cualquier puerto sin la necesidad de vincularlos a un puerto específico?¿Cómo se escuchan los paquetes de difusión en cualquier puerto?
Respuesta
Creo que tendrá que tener un nivel inferior al UDP para lograr esto.
Si realmente quería hacer esto, me gustaría empezar por la descarga de un analizador de código abierto analizador de paquetes/red (Ethereal.com viene a la mente) y leer la fuente para ver cómo leen los paquetes.
Mirando más, me pareció un poco acerca de la captura de paquetes en tcpdump.org.
Lo siento, no puedo dar fragmentos de código específicos, siempre he querido vincular a un puerto específico.
Tendrá que utilizar WinPCap o similar a oler los paquetes en el nivel de enlace, luego se filtra para las difusiones UDP. Lo siento, no creo que haya ninguna API de nivel superior para esto.
Encontré una manera yo mismo. Así es como funciona:
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
mainSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.1"), 0));
mainSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
byte[] byOut = new byte[4] { 1, 0, 0, 0 };
// Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
mainSocket.IOControl(IOControlCode.ReceiveAll, //Equivalent to SIO_RCVALL constant of Winsock 2
byTrue,
byOut);
//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData,0,byteData.Length,SocketFlags.None,new AsyncCallback(OnReceive),null);
En el controlador asincrónico, hago un mainSocket.EndReceive (...), analizar los datos y comenzar una nueva BeginReceive si se desea (controlado desde fuera del receptor multiproceso).
Funciona como un encanto. Los créditos van a Hitesh Sharma (http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx)
- 1. ¿Cómo escuchan dos navegadores simultáneamente en el puerto 80?
- 2. ¿Cómo se escuchan los eventos de Windows en C#?
- 3. cómo capturar paquetes en un puerto específico en cualquier interfaz usando tshark
- 4. ¿Cómo escuchan EditText?
- 5. Número de puerto fuente de puerto
- 6. paquetes de difusión UDP a través de las subredes
- 7. recibir paquetes transmitidos cuando se escucha a un puerto específico
- 8. ¿Cómo se escuchan los clics en POI con Google Maps API?
- 9. ¿Dónde se guardan los paquetes de SSIS?
- 10. Recepción de mensaje de difusión UDP en C#
- 11. ¿Se están cayendo los paquetes Winsock UDP?
- 12. Java DatagramSocket escucha en una dirección de difusión
- 13. ¿Diseño de difusión de red UDP?
- 14. ¿Los receptores de difusión Android consumen batería?
- 15. Enviar mensaje de difusión desde todos los adaptadores de red
- 16. ¿Dónde se instalan normalmente los paquetes PEAR?
- 17. ¿Cómo arreglar los nombres de los paquetes en IntelliJ?
- 18. ¿Cómo se asignan los nombres de los paquetes de Hackage a los nombres de 'cabal install'?
- 19. Multidifusión frente a difusión en LAN
- 20. ¿Cómo se escuchan las notificaciones de iTunes en una Mac (Usando NSDistributedNotificationCenter)
- 21. Definir clases en los paquetes
- 22. Paquetes "dentro" de los módulos
- 23. Subclipse:. Explorador de paquetes no muestra los paquetes, se muestra la vista de directorios de archivos :(
- 24. Envío de difusión UDP en Windows 7
- 25. cómo encontrar los paquetes que nos dejó
- 26. ¿Cómo se puede usar chrome.socket para difusión o multidifusión?
- 27. ¿Qué contienen los paquetes * -dev en los repositorios de paquetes de Linux?
- 28. de los paquetes instalados en I
- 29. ¿Cómo usar los paquetes instalados por quicklisp?
- 30. Conector en bruto de Python que escucha paquetes UDP; sólo la mitad de los paquetes recibidos
Creo que la naturaleza de la unión explícitamente evita este escenario, pero desbordamiento de pila me enseña todo tipo de cosas que no sabía. Esperando escuchar las respuestas sobre este ... – grenade