Чтение из сокета

Тема в разделе "WASM.BEGINNERS", создана пользователем flipper, 27 мар 2007.

  1. flipper

    flipper New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2007
    Сообщения:
    17
    Понимаю что вопрос глупый, но как поступить, если необходимо читать данные, по частям приходящие на один и тот же сокет? То есть как узнать, что новый пакет получен? В тех примерах, что нашел, единичный вызов resv идет сразу после connect. Но ведь пакеты поступают с течением какого-то вемени. Пытаюсь читать несколько последовательно получаемых пакетов, после повторного вызова recv само собой получил пустой буфер.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    А в чем проблема? Бери и читай. На блокирующемся сокете recv не вернется до тех пор, пока не придут данные или не разорвется соединение. Поэтому просто указывай размер нужной части, вызывай recv и жди.
     
  3. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    flipper
    Книги Р. Стивенса тебе в помощь )
     
  4. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    если рекв вернула 0, значит данные закончались, если не закочались, то уменьшай размер буфера преднозначенного для приема на кол-во которое вернул recv

    совет:
    запрос отсылай вида GET /index.html HTTP/1.0
    т.е. не 1.1. версии а 1.0 чтобы лишнии байты не появлялись
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    он конкретизировал протокол?

    юзай асинхронные сокеты
     
  6. flipper

    flipper New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2007
    Сообщения:
    17
    Все это дело - перехват в IE. Протокол HTTP 1.1. Просто перехватываю resv из wsock32 (то есть сокет создан без моего участия) и во время 1-го вызова перехватчика пытаюсь загрузить всю страницу, подредактировать и полностью передать браузеру. Может я только что глупость сказал, но именно так пытаюсь сделать=). Возможна ли реализация такого способа?
    Сказывается неопытность - какие именно сокеты использует браузер (любой), зависит ли их тип от целевого сервера (меня поисковики интересуют)?
    Пробовал - после вызова функции в eax FFFFFFFFh, буфер пустой.
     
  7. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    Great
    другим прггодится
     
  8. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    имхо блокируемому сокету нельзя выставить тайм аут, значит используются неблокирумые (асинхронные) это не единственный показатель.. вот еще) прога виснет когда сокет блочный и возникла проблема, а мой браузер продолжает работать..
    flipper читай книги, а не чаты..
    з.ы. бедны американцы, как только не изощеряются люди, чтоб заработать на них