Шаг 8 - Программируем ответ сервера

Ты здесь
Только не уходи
Всё у нас впереди
Ты здесь ......
	Диана Гурская

После того, как клиент соединился с сервером ему надо достойно ответить. Мол так и так всё в порядке. Синтаксис ответа должен быть такой:

"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.

8_1.gif (6448 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.