typeparam example cref c# .net windows-7 network-programming raw-ethernet

example - ¿Cómo enviar el paquete de Ethernet sin procesar con C#?



summary example c# (3)

¿Hay alguna manera de enviar paquetes Ethernet sin procesar a otro host a través de C #? En Windows 7 si hace diferencia.


Basado en la sugerencia de Saint_pl:

Probablemente encontré una mejor solución, similar a SharpPcap. Es pcapdotnet.codeplex.com - .NET wrapper para WinPcap. Ahora puedo modificar mis paquetes lo que quiera.

Tengo algunos recursos para ti que quizás sean útiles. No intento esas soluciones en Windows 7, pero tal vez contenga una buena información para comenzar.

Manipulación de paquetes Ethernet sin formato o espejo en CodeProject

Este propósito de este artículo es explicar cómo enviar un paquete Ethernet sin procesar utilizando C # en una plataforma de Microsoft. Un paquete Ethernet sin procesar es la trama de red completa de Capa 2 que se envía al cable físico. Enviar un cuadro como este le permite manipular las direcciones MAC de destino y fuente y los campos de protocolo de Capa 3.

También algo de información sobre sockets en bruto (por si acaso usted también es interesante):

Comunicación de sockets de cliente (y servidor) consulte el capítulo completo, pero aquí hay partes clave:

No enviar paquetes, pero quizás sea interesante: un rastreador de red en C # , SharpPcap - Un marco de captura de paquetes para .NET


La API de iphelper tiene algunas cosas de bajo nivel, pero probablemente no tanto como desea obtener


Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ip = new IPEndPoint(IPAddress.Parse("10.25.184.11"), 4456); server.Connect(ip); byte[] sendData = new byte[] { 0, 8, 32, 64 }; server.Send(sendData); //done. now let''s listen for data byte[] receiveData = new byte[1024]; int receivedDataLength = server.Receive(receiveData); //if the response is a string message string stringData = Encoding.ASCII.GetString(receiveData, 0, receivedDataLength); Console.WriteLine(stringData);