Шаг 11 - Четыре этапа транзакции HTTP

Установка соединения

Перед обменом информации клиент и сервер должны иметь соединение TCP, именно по этому мы устанавливали соединение Internet. То есть нам нужен был IP адрес. Как различаются разные протоколы ? Для этого используются уникальные номера. Эти номера называются портами. Для HTTP стандартный порт 80. Вот список наиболее известных портов.

FTP 	21
TELNET 	23
SMTP	25
TFTP	69
Gopher	70
Finger	79
HTTP	80

Порты делятся на 2 части. С адресами ниже 1024 привелигированные вы не сможете создать свой порт с номером меньше 1024. Мы с вами в нашей программе указывали номер порта создавая сокет.

#define PORT_ADDR 80
......
socketaddr.sin_port = htons(PORT_ADDR);
if (bind(servsocket,(LPSOCKADDR)&socketaddr,
	sizeof(socketaddr)) == SOCKET_ERROR){
......
};

Запрос Клиента

Каждый запрос клиента передаваемый на WEB-сервер начинается с метода, за которым следует URL объекта. Далее идет информация о версии протокола HTTP и символ возврата каретки с переводом строки. Метод - это команда клиента к серверу с целью указания запроса. Мы его не обрабатывали. Научимся :-)

Ответ сервера

После получения сообщения сервер отвечает сообщением HTTP. Затем идет код статуса и тема ответа из 3 цифр, потом дополнительная информация, а потом тело ответа. Если обратите внимание, что мы с Вами это упустили. Ну и ладно исправим потом. А вот данные мы посылали так.

CString buff="\nСайт шаг за шагом представляет\n\r\n";
HTTPServer.SendData(buff.GetBuffer(1000));
..........
void CSeverWinSock::SendData(LPSTR buff)
{
int Errors;
Errors = send(clientsocket,(LPSTR)buff,lstrlen(buff),0);
if (Errors == SOCKET_ERROR) AfxMessageBox("Error Send");
}

Сервер разрывает соединение

После отправки сообщения сервер имеет возможность разорвать соединение. Вот так мы это делали закрывая сокет.

closesocket(HTTPServer.clientsocket);

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 19.01.2000