Передача пакета на сетевой интерфейс

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
mirk
постоялец
Сообщения: 319
Зарегистрирован: 24.09.2007 10:03:39

Передача пакета на сетевой интерфейс

Сообщение mirk »

Как послать пакет на сетевой интерфейс у которого нет IP?
И как принять подобный пакет?
mig-31
постоялец
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Сообщение mig-31 »

Ethernet пакет через MAC адреса.
mirk
постоялец
Сообщения: 319
Зарегистрирован: 24.09.2007 10:03:39

Сообщение mirk »

Вопрос прежний - как :)
shelter
незнакомец
Сообщения: 1
Зарегистрирован: 18.05.2016 23:45:57

Сообщение shelter »

Установить драйвер WinPCap. Для Delphi есть заголовочные файлы. Через него можно слать и принимать Ethernet пакеты.

procedure TSendingThread.ExecuteInternal;
const BUF_SIZE = 2048;
var buf: PByteArray;
pkt: Ppacket;
len: word;
seq: byte;
nowEmpty: boolean;
begin
seq := 0;
buf := GetMemory(BUF_SIZE);
try
Move(Eth.FEthernet.snd.mac, buf^[0], 6);
Move(Eth.FEthernet.rcv.mac, buf^[6], 6);
buf^[12] := hi(Eth.FEthernet.snd.typ);
buf^[13] := lo(Eth.FEthernet.snd.typ);
pkt := PacketAllocatePacket;
if pkt = nil then PCapCheck(false, 'PacketAllocatePacket');
try
...
PacketInitPacket(pkt, buf, 17 + len);
PCapCheck(PacketSendPacket(Eth.FEthernet.Adapter, pkt, false), 'PacketSendPacket');
end;
finally
PacketFreePacket(pkt);
end;
finally
FreeMem(buf);
end;
end;
Ответить