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

Discussion in 'WASM.NETWORKS' started by Luvsi, Nov 30, 2005.

  1. Luvsi

    Luvsi New Member

    Blog Posts:
    0
    ребята, помогите девушке ...

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



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



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



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

    Luvsi New Member

    Blog Posts:
    0
    забыла - язык реализации с++
     
  3. Ms Rem

    Ms Rem New Member

    Blog Posts:
    0
    Фтопку WSAAsyncSelect, WSAEventSelect рулит.
     
  4. Fallout

    Fallout New Member

    Blog Posts:
    0
    Да я тоже согласен раз уж так извращаться то с Евентами (я в своих использую прсото 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

    Blog Posts:
    0
    я знаю, что через EventSelect попроще, но по ТЗ надо на AsyncSelect сделать ...
     
  6. Fallout

    Fallout New Member

    Blog Posts:
    0
    А как она(?) будет обрабатывать сообщения от Консольки то? :)
     
  7. Fallout

    Fallout New Member

    Blog Posts:
    0
    Хотя можно создать фейк диалог который и будет принимать сообщения... Но помоему дурацкое тогда ТЗ :) проще уж с евентами или прсото с селект....
     
  8. Fallout

    Fallout New Member

    Blog Posts:
    0
    >>забыла - язык реализации с++

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



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

    dcskm4200 New Member

    Blog Posts:
    0
    invoke CreatePacket, addr ddddgfgh, 36, 8, esi



    where?CreatePacket
     
  10. Luvsi

    Luvsi New Member

    Blog Posts:
    0
    так, уже немного разобралась, теперь вот какой вопрос - как связать скрытое окно, которое обрабатывает события сокетов, и консольку, в которой должны отображаться пришедшие данные и вводиться сообщения на отправку
     
  11. Pushkoff

    Pushkoff New Member

    Blog Posts:
    0
    OverlapedIO рулит...
     
  12. yureckor

    yureckor New Member

    Blog Posts:
    0
    Pipe помогут, хотя под Win98 подглючивают (при перенаправлении ввода-вывода консоли в канал).
     
  13. Fallout

    Fallout New Member

    Blog Posts:
    0
    @A_Must_Loll

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



    -+-+-+-+

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

    alpet Александр

    Blog Posts:
    0
    Я обработку ввода-вывода с консоли обычно выделяю в отдельный поток. Хотя в данном случае наверное надо выделить в поток цикл обработки сообщений от окон.
     
  15. Fallout

    Fallout New Member

    Blog Posts:
    0
    A_Must_Loll

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



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