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



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


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

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




    Содержание  Назад  Вперед