клиент-сервер с AsyncSelect

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

  1. Luvsi

    Luvsi New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2005
    Сообщения:
    4
    ребята, помогите девушке ...

    у меня есть такое тз:



    Написать одно приложение, которое при запуске проверяет наличие уже запущенных серверов в локальной сети и при наличии таковых позволяет присоединиться к любому из них в качестве клиента. В противном случае при отсутствии уже запущенных серверов позволяет запустить данное приложение в качестве сервера. В данном случае одно и тоже приложение является как сервер, так и клиент приложение. Для проверки функционирования реализовать возможность отправлять сообщения от одного клиента другим через сервер. Реальзовать через WSAAsyncSelect, при запуске посылать широковещательный UDP запрос для проверки наличия уже запущенного сервера, для приёма\отправки сообщений использовать протокол TCP.



    в сокетах вроде соображаю, но как всё это сделать через WSAAsyncSelect сообразить немогу, а и ещё - делать в Console App



    помогите пожалуйста, буду очень благодарна
     
  2. Luvsi

    Luvsi New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2005
    Сообщения:
    4
    забыла - язык реализации с++
     
  3. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Фтопку WSAAsyncSelect, WSAEventSelect рулит.
     
  4. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    Да я тоже согласен раз уж так извращаться то с Евентами (я в своих использую прсото select :) )



    Вот тебе прсотой примерчик использования:



    Создаешь вначале объект событий....



    SOCKET s;

    WSANETWORKEVENTS netev;



    WSAEVENT wsae = WSACreateEvent();



    Далее выбираешь те события на которые этот объект будет реагировать....

    События из разряда FD_* и тд (полный список можно в мсдн поглядеть):



    Для примера выбирем когда у нас появяться данные от клиента...



    WSAEventSelect(s, wsae, FD_READ);



    Далее ждем пока обхект у нас просигнализирует...



    WSAWaitForMultipleEvents(1, &wsae, TRUE, INFINITE, FALSE);



    Далее смотрим что за событие произошло )



    WSAEnumNetworkEvents( s, wsae, &netev );



    if(netev.lNetEvents & FD_READ)

    printf("use recv()\n");





    ну вот
     
  5. Luvsi

    Luvsi New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2005
    Сообщения:
    4
    я знаю, что через EventSelect попроще, но по ТЗ надо на AsyncSelect сделать ...
     
  6. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    А как она(?) будет обрабатывать сообщения от Консольки то? :)
     
  7. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    Хотя можно создать фейк диалог который и будет принимать сообщения... Но помоему дурацкое тогда ТЗ :) проще уж с евентами или прсото с селект....
     
  8. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    >>забыла - язык реализации с++

    :) А ты на ассемблере выкладываешь.... может быть она(?) не поймет



    да и довал я пример уже как евенты использывать :)
     
  9. dcskm4200

    dcskm4200 New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2004
    Сообщения:
    173
    Адрес:
    China
    invoke CreatePacket, addr ddddgfgh, 36, 8, esi



    where?CreatePacket
     
  10. Luvsi

    Luvsi New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2005
    Сообщения:
    4
    так, уже немного разобралась, теперь вот какой вопрос - как связать скрытое окно, которое обрабатывает события сокетов, и консольку, в которой должны отображаться пришедшие данные и вводиться сообщения на отправку
     
  11. Pushkoff

    Pushkoff New Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    40
    Адрес:
    Донецк
    OverlapedIO рулит...
     
  12. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    Pipe помогут, хотя под Win98 подглючивают (при перенаправлении ввода-вывода консоли в канал).
     
  13. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    @A_Must_Loll

    Видемо такой же тяжелый случай как и ник....



    -+-+-+-+

    мм а разве не прокатит вывод в консоль ... из процедуры обрбаотки сообщений окна?..... ведь есть консолька.... же :)
     
  14. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Я обработку ввода-вывода с консоли обычно выделяю в отдельный поток. Хотя в данном случае наверное надо выделить в поток цикл обработки сообщений от окон.
     
  15. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    A_Must_Loll

    C самомнением всё в рамках нормы... ибо что не знаю не говорю а шутки шутить на удаф.ком



    п.с: извеняюсь за оффтоп