Цитата(vetal @ Apr 30 2013, 09:50)

Сталкивался. Напишите прокси на c/c++ и обеспечите достаточную буферизацию пакетов.
Прокси(перехватчик) должен обеспечивать прием пакетов и их ретрансляцию в Вашу программу на С# для дальнейшей неспешной обработки.
Производительность C# недостаточна для решения таких задач даже на i7

Так же для уменьшения потери пакетов желательно перейти на 100 МБит соединение(по крайней мере выйти на трафик не более 50% от возможностей интерфейса, т.к. при работе на 100% скорости нужен особый подход) и поиграться с настройками режимов работы трансиверов.
100 Мбит не подойдет, т.к. в дальнейшем скорость увеличится до 400 Мбит
Пробовал делать следующем образом на C++. При такой реализации не обеспечивается прием всех пакетов.
....инициализация сокета
//---------------------------------------------
// предача запроса на получение пакетов
wprintf(L"Sending a datagram to the receiver...\n");
iResult = sendto(SendSocket,
message, BufLen, 0, (SOCKADDR *) & RecvAddr, sizeof (RecvAddr));
if (iResult == SOCKET_ERROR) {
wprintf(L"sendto failed with error: %d\n", WSAGetLastError());
closesocket(SendSocket);
WSACleanup();
return 1;
}
//-----------------------------------------------
//ожидание приема пакетов и подсчет количества
wprintf(L"Receiving datagrams...\n");
int totalRecive=0;
while(true)
{
iResult = recvfrom(RecvSocket, RecvBuf, R_BufLen, 0, (SOCKADDR *) & SenderAddr, &SenderAddrSize);
totalRecive++;
if(totalRecive==TotalPack)
break;
}
//---------------------------------------------
// окончание приема.
wprintf(L"Finished sending. Closing socket.\n");
....закрытие сокета