Асинхронные сокеты, как получить все данные?

Тема в разделе "WASM.BEGINNERS", создана пользователем M0rg0t, 20 дек 2011.

  1. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.601
    Подскажите пожалуйста, как на неблокирующих сокетах после сенда дождаться ВСЕХ данных?
    Ресв моментально возвращает -1
    (Кроме тупой задежрки через Sleep)
     
  2. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    как для начала там моделей тех ассинхронных сокетов несколько штук. Вам видимо возвращают еррор WSAWOULDBLOCK (както так), можно пользоватся select()-ом или если OVERLAPPED указываете тогда WSAGetOverlappedResult() а воопще - книжечку бы почитале по сокетам виндозным, сразу много вопросов отпадет.

    A Jones, Network programming for Microsoft Windows
    ничо так все описано.
     
  3. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    Вроде как они для того и неблокирующие, чтоб не ждать. Придет очередная порция - будет извещение, в зависимости от того, как выбирался асинхронный режим - ивентом, оконным сообщением...
     
  4. karabas_barabas

    karabas_barabas Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    168
    если через select то тебе нужно опрашивать постоянно сокет на предмет событий ... if (FD_ISSET(Socket,...))
    и уже потом получать/отправлять данные при наступлении нужного события