Цитата(Aprox @ Oct 11 2008, 23:21)

... Hо сколько стоит сил его завести!
... очень мало

1. качаете
WinPcap4.0.2 или
WinPcap4.1beta42. качаете Developer's Pack для
v4.0.2 или
v4.1 beta4, соответсвенно.
3. устанавливаете то, что скачали в п.1
4. распаковываете то, что скачали в п.2. (папки - doc, examples(2), include, lib)
Открываем файл
WpdPack\Examples-pcap\basic_dump\basic_dump.c - пример как принимать
Открываем файл
WpdPack\Examples-pcap\sendpack\sendpack.c - пример как передавать
Код для сендера вообще смешной:
Код
#include <stdlib.h>
#include <stdio.h>
#include <pcap.h>
int main(int argc, char **argv)
{
pcap_t *fp;
char errbuf[PCAP_ERRBUF_SIZE];
u_char packet[100];
int i;
/* Open the adapter */
if ((fp = pcap_open_live(argv[1], // name of the device
65536, // portion of the packet to capture. It doesn't matter in this case
1, // promiscuous mode (nonzero means promiscuous)
1000, // read timeout
errbuf // error buffer
)) == NULL)
{
fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", argv[1]);
return 2;
}
/* Supposing to be on ethernet, set mac destination to 1:1:1:1:1:1 */
packet[0]=1; packet[1]=1; packet[2]=1; packet[3]=1; packet[4]=1; packet[5]=1;
/* set mac source to 2:2:2:2:2:2 */
packet[6]=2; packet[7]=2; packet[8]=2; packet[9]=2; packet[10]=2; packet[11]=2;
/* Fill the rest of the packet */
for(i=12;i<100;i++) {packet[i]=i%256;}
/* Send down the packet */
if (pcap_sendpacket(fp, // Adapter
packet, // buffer with the packet
100 // size
) != 0)
{
fprintf(stderr,"\nError sending the packet: \n", pcap_geterr(fp));
return 3;
}
pcap_close(fp);
return 0;
}
... WinPCap на любителя, но для тестирования связки железо-ПК более чем достаточна, до и очень проста для программирования, про возможности даже говорить не буду - в доках прочтите или в нете.
У нас связка TMS320C6455(EMAC minidrv без NDK) <-> NoteBook (WinXP+WinPCap4.0.2) работала устойчиво, выжимали >90% 100-ки (гигабит не проверяли, т.к. DSK ограничен 100PHY)