Сокеты в службе

Тема в разделе "WASM.NETWORKS", создана пользователем Max, 19 янв 2005.

  1. Max

    Max Member

    Публикаций:
    0
    Регистрация:
    22 май 2003
    Сообщения:
    192
    вообщем надо написать службу (service), внутри которой создается сокет.

    сокет должен быть ассинхронный и работать через очередь сообщений, то есть выделяется hwnd, потом WSAAsyncSelect.



    вопрос, будет ли такой механизм работать в службе (в плане создания hwnd)?

    надо ли будет службе устанавливать флаг interactive и достаточно ли будет этого?
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Max

    AFAIK, через очередь сообщений вообще делать это никогда не стоит (не только в случае службы). Надо через accept и создавать поток на обработку каждого коннекта. Такое я уже делал и как раз в службе.
     
  3. Turkish

    Turkish New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    80
    Адрес:
    Russia
    Это в случае постоянной передачи информации по сети стоит делать отдельные потоки. А если прога 90% времени проводит в ожидании инфы от сокета стоит делать через сообщения.
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Turkish

    Поток будет создан только в момент соединения. Вариант с accept, IMO, стабильнее.
     
  5. Turkish

    Turkish New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    80
    Адрес:
    Russia
    Так в том и прикол, что соединение может продолжаться большое время, а куча потоков тормозит и затрудняет отладку. Тут уже надо исходить из конкр. задачи, точно сказать что лучше - нельзя.



    ЗЫ. Был бы один из вариантов идеальным, второго бы не существовало...
     
  6. Max

    Max Member

    Публикаций:
    0
    Регистрация:
    22 май 2003
    Сообщения:
    192
    Quantum

    Поток будет создан только в момент соединения

    у меня соединения вообще нет ;) - сокет udp-шный

    и простой до безобразия - на входные данные он дает ответ (типа ping'а).

    надо для того, чтобы клиент быстро нашел список серверов в локальной сети через broadcast сообщение, а не пинговал все станции по очереди, что есть не быстро.



    сокет должен быть ассинхронный и работать через очередь сообщений

    это потому, что это уже есть, а переписывать все это на всякие overlapped процедуры, порты завершения в/в и т.п. у меня не стоИт, хотя это было бы правильнее...