Программирование на C++ глазами хакера


. Использование сокетов через события Windows - часть 6


  • сервер должен выделить необходимый объем памяти или, если количество данных слишком большое, создать временный файл;
  • при получении события FD_READ сохранять принятые данные в буфере или в файле. Обрабатывать событие, пока данные не будут получены полностью, и клиент не пришлет определенную последовательность байт, определяющую завершение передачи данных.
  • Подобным способом должна происходить отправка с клиента:

    • сообщить серверу количество отправляемых данных;
    • открыть файл, из которого будут читаться данные;
    • послать первую порцию данных, остальные данные — по событию FD_WRITE;
    • по завершению отправки послать серверу последовательность байт, определяющую завершение передачи данных.

    Использование сообщений Windows очень удобно, но вы теряете совместимость с UNIX-системами, где сообщения реализованы по-другому и нет функции WSAAsyncSelect. Поэтому при переносе такой программы на другую платформу возникнут большие проблемы и придется переписать слишком много кода. Но если перенос не планируется, то я всегда использую WSAAsyncSelect, что позволяет добиться максимальной производительности и удобства программирования.




    Начало  Назад  Вперед



    Книжный магазин