Send.cs

This example demonstrates how to send packets from C#.
See also:
PacketX , Adapter , SendPacket
// File:         Send.cs
//
// Description:  This script demonstrates how to send packets from C#
//
// Notes:        tlbimp PacketX.dll && csc /R:PacketXLib.dll Send.cs
//
// Created:      May 26, 2004
//
// Copyright (c) 2000-2004 BeeSync Technologies.

using System;
using PacketXLib;

namespace Send
{
  class Test 
  {
    [MTAThread]
    static void Main(string[] args)
    {
      PacketXClass oPktX = new PacketXClass();
      
      // Display network adapters
      AdapterCollection oAdapters = (AdapterCollection)oPktX.Adapters;
      for (int i = 0; i < oAdapters.Count ; i++) 
      {
        if (Convert.ToBoolean(oAdapters[i+1].IsGood))         
          Console.WriteLine("(" + (i+1) + ") " + oAdapters[i+1].Description);
      }
      // Select network adapter
      oPktX.Adapter = null;
      while (oPktX.Adapter == null)
      {
        Console.Write("Choose adapter#");
        try 
        { 
          int nSelected = Convert.ToInt16(Console.ReadLine().Trim(),10);
          oPktX.Adapter = oAdapters[nSelected];
        }
        catch (System.Exception)
        {
          Console.WriteLine("Invalid adapter number.");
        }
      }

      // Get adapter hardware address and IP address
      Adapter oAdapter = (Adapter)oPktX.Adapter;
      string sHWAddr = oAdapter.HWAddress;
      string sIPAddr = oAdapter.NetIP;
      string sIPMask = oAdapter.NetMask;
      Console.WriteLine("MAC Addr = " + sHWAddr);
      Console.WriteLine("IP  Addr = " + sIPAddr);

      // Send ARP request for this IP address
      string sIPReso = "11.12.13.14";
      char [] aDelimiter = {'.'};
      string[] aIPReso = sIPReso.Split(aDelimiter, 4);
      string[] aIPAddr = sIPAddr.Split(aDelimiter, 4);

      // Build ARP packet
      Object[] oPacket = new Object[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
        Convert.ToByte("0x" + sHWAddr.Substring(0,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(2,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(4,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(6,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(8,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(10,2), 16),
        0x08, 0x06, 0x00, 0x01,
        0x08, 0x00, 0x06, 0x04, 0x00, 0x01,
        Convert.ToByte("0x" + sHWAddr.Substring(0,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(2,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(4,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(6,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(8,2), 16),
        Convert.ToByte("0x" + sHWAddr.Substring(10,2), 16),
        Convert.ToByte(aIPAddr[0], 10),
        Convert.ToByte(aIPAddr[1], 10),
        Convert.ToByte(aIPAddr[2], 10),
        Convert.ToByte(aIPAddr[3], 10),
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        Convert.ToByte(aIPReso[0], 10),
        Convert.ToByte(aIPReso[1], 10),
        Convert.ToByte(aIPReso[2], 10),
        Convert.ToByte(aIPReso[3], 10),
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

      // Send 100 ARP requests      
      oAdapter.SendPacket(oPacket, 100);
    }
  }
}


Copyright © 2000-2007 beeSync. All rights reserved.