Отправка по сети HANDLE

Тема в разделе "WASM.WIN32", создана пользователем witcher, 24 дек 2006.

  1. witcher

    witcher New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2006
    Сообщения:
    73
    Есть HANDLE который указывает на кусок памяти.
    Как эту память передать по сети используя сокеты и функцию send.
    Я пробовал такой способ

    HGLOBAL hmem=NULL;
    //.....................................................................................................................
    GetHGlobalFromStream(stream, &hmem);
    //............................................................
    send(s, (char *)hmem, StreamSize.LowPart, 0)
    //.................................................................................
    Но получал ошибку
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    >> Как эту память передать по сети используя сокеты и функцию send.
    ну по видимому считать содержимое интиресующего куска в буффер и отправить
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    witcher
    Прошу прощения, но зачем это надо?
     
  4. witcher

    witcher New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2006
    Сообщения:
    73
    Просто данные хранятся в потоке (IStrem ) и эти данные надо передать по сети.
    В потоке хранится изображение.
     
  5. witcher

    witcher New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2006
    Сообщения:
    73
    А если копировать данные в буфер то это довольно большой кусок.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    GlobalLock вернёт указатель на память.
    Делай примерно так:
    Код (Text):
    1. void *pMem;
    2. HGLOBAL hmem=NULL;
    3.  
    4. GetHGlobalFromStream(stream, &hmem);
    5. pMem = GlobalLock(hmem);
    6. send(s, (char *)pMem, StreamSize.LowPart, 0);
    7. GlobalUnlock(hmem);