Ты здесь Только не уходи Всё у нас впереди Ты здесь ...... Диана Гурская
После того, как клиент соединился с сервером ему надо достойно ответить. Мол так и так всё в порядке. Синтаксис ответа должен быть такой:
"HTTP/1.0" < код возврата > [ < сообщение > ] < crlf > {< Поле заголовка >: < Значение > < crlf >}* < crlf > < HTML документ >
Я перестроил функцию SendFile для того, чтобы заголовок постоянно отправлялся перед отправкой файла. Стабильность работы возрасла на порядок.
BOOL CSeverWinSock::SendFile(CString FileName) { CFile cf(FileName,CFile::modeRead); int fileLeght=cf.GetLength(); CString SendOk="HTTP/1.0 200 OK\015\012Server: FirsStepServer/0.1\015\012\015\012"; CString SendFile; cf.Read(SendFile.GetBufferSetLength(fileLeght) ,fileLeght); SendOk=SendOk+SendFile; SendData(SendOk.GetBufferSetLength(SendOk.GetLength()) ,SendOk.GetLength()); return TRUE; }
Обратите вимание на конец строки. Перед тем как отправлять файл необходимо два раза указать CRLF. Один раз по окончании строки заголовка, второй раз о том, что все и строка статуса и заголовок посланы. Это важно. Оставьте один раз и посмотрите файл не выведется.
Вы можете поэкспериментировать с кодами возврата. Вот так. Например на авторизацию доступа.
CString SendOk="HTTP/1.0 401 OK\015\012\015\012";
Вот чего мне показал в ответ Microsoft Exploler.