Конференция "Сети" » Обработка информации от нескольких сокетов. [D7, WinXP]
 
  • Новичек © (10.03.08 20:35) [0]
    Уважаемые Мастера, у меня такой вопрос:
    С помощью WSA создаются несколько сокетов. Обработку от одного сокета я назначаю с помощью WSAAsyncSelect.
    А есть ли способ обрабатывать информацию с помощью ОДНОЙ функции от ВСЕХ сокетов?
    Спасибо.
  • Сергей М. © (10.03.08 20:41) [1]
    Есть.

    Для каждого из созданных тобой гнезд вызови WSAAsyncSelect, указав хэндл одного и того же окна, тогда все сообщения об интересующих событиях этих гнезд будут адресованы указанному окну.
  • Новичек © (10.03.08 20:48) [2]
    2 Сергей М.:
    Я так и сделал сразу - не работает. Реагирует функция только на последний сокет.
  • Сергей М. © (10.03.08 20:58) [3]

    > не работает


    А у меня работает.
    Мало того, и у ребят из Борланда, разработавших стандартные компоненты TServer/ClientSocket тоже работает. Чудеса да и только)

    Что я делаю не так ?)
  • Новичек © (10.03.08 21:01) [4]
    2 Сергей М.:
    Издеваетесь :-)
    Сейчас просмотрю свой код по буковкам, т.к. я тоже думаю, что работать должно.
  • Сергей М. © (10.03.08 21:04) [5]

    > Новичек ©   (10.03.08 21:01) [4]


    Почему издеваюсь-то ?
    На самом же деле работает !
  • Новичек © (10.03.08 21:11) [6]
    2 Сергей М.:
    Нашел - я переменной WorkedSocket присваивал дескрипторы всех вновь создаваемых сокетов:

    WorkedSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);



    Соответственно, в конце оставался только один дескриптор.
    Спасибо за поддержку, Сергей.
  • Сергей М. © (10.03.08 21:15) [7]

    > Новичек ©   (10.03.08 21:11) [6]


    Да не за что)
  • DVM © (10.03.08 22:41) [8]

    > Новичек ©   (10.03.08 20:35)  

    я, кстати, как то пробовал сравнить два варианта: в первом создавал 1000 окон по одному для каждого сокета, а во втором одно окно на 1000 сокетов. Разницы ощутимой я не увидел. Сильно много ресурсов первый вариант тоже не сожрал. Хотя кажется на первый взгляд, что 1000 окон - это чудовищно много.
  • Новичек (12.03.08 17:27) [9]
    To DVM:
    Вы абсолютно правы - я проделывал такой экспкримент, получил те же самые результаты.
    И еще: запихивал создание и обработку событий от сокетов в отдельные процессы. Результат - жрет память немеряно :-)
  • Сергей М. © (12.03.08 19:57) [10]

    > запихивал создание и обработку событий от сокетов в отдельные
    > процессы


    Это как ?
  • DVM © (12.03.08 21:58) [11]

    > Сергей М. ©   (12.03.08 19:57) [10]

    у него под Unix наверное :) там у демонов как раз процесс клонируется.
 
Конференция "Сети" » Обработка информации от нескольких сокетов. [D7, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.001]