Есть socket, который принимает и посылает данные, по протоколу TCP/IP. Каким образом можно получить доступ к буферу, с которого функция recv читает полученные данные для этого socket'а ? А именно нужно записать в него новые данные, и оставить старые. Так чтобы при вызове функции recv считались данные, что там были и новые которые били записаны.
Может через какой-нибудь ndis винде пакет послать, как бы от имени чужого хоста, которая она как данные при приёма воспримет. Другово ничего в голову не приходит...
router если нужно добавлять данные (имеется ввиду изменение размера принятых данных в большую сторону) то выполнить это все в ndis фильтре займет времени явно больше в юзермоде не нужно думать о физической среде, протоколах и прочей фигне
Одно замечание-я бы чуть по другому поступал(не знаем _точно_ что используется именно recv) (потому что например объем доступных данных - можно прочитать ioctsocket, никто не запрещает больше отдать конечно...но зачем лишние проблемы, также - есть такие функции как WSARecv[Ex], есть асинхронный режим, почти всегда-можно вообще ReadFile для чтения делать...) А именно - писать свой Winsock2 LSP(на базе примеров в Platform SDK), работает в - юзермоде,ловит вообще весь сетевой трафик (кроме особо извращенных приложений типа которые сразу к TDI лезут) Недостатки: - LSP видно на системе (и как его скрыть - я не знаю) - Процедура корректной установки и особенно - удаления...немного сложная (а поверх твоего LSP могут и антивирусы сесть(точнее они попытаются и "поверх" и "под")
у меня таже проблема перехватываю recv и WSARecv сплайсингом, надо добавить данные, но размер буфера задаётся вызывающей программой.....никак не додумаюсь как это сделать. А если поставить свой LSP то такой проблемы не будет?