TransmithFile и WSAEventSelect

Тема в разделе "WASM.BEGINNERS", создана пользователем lobzik, 28 ноя 2009.

  1. lobzik

    lobzik New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    34
    Привет всем.
    Передаю файл функцией TransmithFile, все нормально, если сокет в блоке. Если блок не ставить то вылетает ошибка переполнения стэка, когда качаю фильм. Ставлю блок, скачивается, но если клиент отключается по какой либо причине или просто перестает слать данные, то мой сокет висит, пропуская "мимо ушей" FD_CLOSE и FD_READ (сообщение об ошибке) т.е переводя в блок я лишаюсь всех тех благ которые представляет ф-ии WSAEventSelect и тд. Как можно совместить и то и то ?
     
  2. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    с такой проблемой не сталкивался, но сталкивался с другой, у TransmithFile есть проблемы на не серверных ос. В МСДН сказано что ожидайте разное поведение в серверных и не серверных. Так вот на вокрстэшшене мне не удалось загрузить все ядра процессора этой функцией, блакодаря чему скорость в тесте падала. Совместить можно юзая мемори маппинг, но чтобы адресного пространства хватало нужно 64бит ос или работать по окнам.
     
  3. lobzik

    lobzik New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    34
    Как мемори маппинг может помочь ?
     
  4. lobzik

    lobzik New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    34
    а через WSADuplicateSocket было бы норм или гемор лишний?
     
  5. lobzik

    lobzik New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    34
    блин туплю сижу, если сокет закрывается на той стороне то я получаю ошибку и выхожу из цикла, а если на той стороне ошибка TransmitFile, то я о ней не узнаю... будем надеятся что таких ошибок не будет..
     
  6. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    lobzik
    >Как мемори маппинг может помочь ?
    Снизить оверхед блочности. Мапиш файл в память и инициируешь один большой асинхронный врайт. Время таймаутов настраивается опциями сокета.