записать данные в socket’ный буфер

Тема в разделе "WASM.NETWORKS", создана пользователем router, 30 июл 2009.

  1. router

    router New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2009
    Сообщения:
    3
    Есть socket, который принимает и посылает данные, по протоколу TCP/IP.
    Каким образом можно получить доступ к буферу, с которого функция recv
    читает полученные данные для этого socket'а ?
    А именно нужно записать в него новые данные, и оставить старые.
    Так чтобы при вызове функции recv считались данные, что там были
    и новые которые били записаны.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    хукать recv?
     
  3. router

    router New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2009
    Сообщения:
    3
    Я рассматривал этот вариант, и не исключаю.
    Но все же нет способа записать данные прямо в буфер ?
     
  4. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Может через какой-нибудь ndis винде пакет послать, как бы от имени чужого хоста, которая она как данные при приёма воспримет. Другово ничего в голову не приходит...
     
  5. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    хотя нет тупизм.. тогда он дальше данные принимать не сможет нормально...
     
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    router
    если нужно добавлять данные (имеется ввиду изменение размера принятых данных в большую сторону) то выполнить это все в ndis фильтре займет времени явно больше
    в юзермоде не нужно думать о физической среде, протоколах и прочей фигне
     
  7. joktar

    joktar New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2009
    Сообщения:
    7
    Одно замечание-я бы чуть по другому поступал(не знаем _точно_ что используется именно recv)
    (потому что например объем доступных данных - можно прочитать ioctsocket, никто не запрещает больше отдать конечно...но зачем лишние проблемы,
    также - есть такие функции как WSARecv[Ex], есть асинхронный режим, почти всегда-можно вообще ReadFile для чтения делать...)
    А именно - писать свой Winsock2 LSP(на базе примеров в Platform SDK), работает в - юзермоде,ловит вообще весь сетевой трафик (кроме особо извращенных приложений типа которые сразу к TDI лезут)
    Недостатки:
    - LSP видно на системе (и как его скрыть - я не знаю)
    - Процедура корректной установки и особенно - удаления...немного сложная (а поверх твоего LSP могут и антивирусы сесть(точнее они попытаются и "поверх" и "под")
     
  8. vasya1

    vasya1 New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2009
    Сообщения:
    8
    у меня таже проблема перехватываю recv и WSARecv сплайсингом, надо добавить данные, но размер буфера задаётся вызывающей программой.....никак не додумаюсь как это сделать. А если поставить свой LSP то такой проблемы не будет?