Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

HTTP Server

561
20 ноября 2001 года
Fly
15 / / 20.12.1999
Привет. Кто писал такие вещи как http сервера помогите советом/документацией/исходниками как это делается.
спасибо
ПС желательно с уклоном на программирование в Builder 5
707
20 ноября 2001 года
Ager
8 / / 20.02.2000
Цитата:

On 2001-11-20 1947, Fly wrote
Привет. Кто писал такие вещи как http сервера помогите советом/документацией/исходниками как это делается.
спасибо
ПС желательно с уклоном на программирование в Builder 5


Здесь есть немного устаревшая, но ещё вполне годная спецификация RFC 2068 на русском языке.

561
21 ноября 2001 года
Fly
15 / / 20.12.1999
спасибо за совет посмотрю
449
22 ноября 2001 года
Fantasist
124 / / 20.06.2000
Я писал. Если ты хочешь сделать довольно простой сервер, то изучать всю спецификацию не обязательно, достаточно небольшого минимума.(а то эти спецификации... написанно то много, а что там минимум, выжать сложно )
Хотя, конечно, если тебе нужен полнофункциональный сервер, ну тогда, конечно, надо сидеть читать.
561
22 ноября 2001 года
Fly
15 / / 20.12.1999
Цитата:

On 2001-11-21 2156, Fantasist wrote
Я писал. Если ты хочешь сделать довольно простой сервер, то изучать всю спецификацию ....


Нужен простой сервер... задача= вывод информации из БД в шаблонную html форму

449
27 ноября 2001 года
Fantasist
124 / / 20.06.2000
А ну понятно. Тогда тебе скорее всего будет достаточно, простенького HTTP заголовка для ответа. Ща запостим, если еще нужно


HTTP/1.0 200
Last-Modified: Mon, 26 Nov 2001 19:52:20 GMT
Expires: Wed, 28 Nov 2001 15:18:45 GMT
Content-Type: text/html; charset=koi8-r
Server: chat server
Connection: close

<HTML>
<HEAD>
<TITLE>....</TITLE>
.
.
</HEAD>
<BODY>
..
..
..
</BODY>
</HTML>

Ну понятно где тут заголовок, а где тело (не забудь пустую строку после заголовка, это важно). Поля заголовка можно подредактировать(там Expires, charset). Заголовок, в принципе, может содержать вообще только одну строку: &quot;Content-Type: text/html&quot; . Ну вот, формируешь, значит, такой текст, и передаешь его как ответ. Передавать это дело можно цельным куском. Да, и не забывай закрывать соеденение после отсылки ответа, чтоб браузер понял, что это конец. (иначе надо использовать &quot;Content-length&quot;)

Ну а вот так, например, может выглядеть запрос (это тот, которым я пользовался):

'GET /doc1.htm HTTP/1.1'+#$D#$A+
'Accept: application/vnd.ms-excel, application/msword, */*'+#$D#$A+
'Accept-Language: en-us'+#$D#$A+
'Accept-Encoding: gzip, deflate'+#$D#$A+
'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)'+#$D#$A+
'Host: vingrad.com'+#$D#$A+
'Connection: Keep-Alive'+#$D#$A+#$D#$A;

По большому счету, роль играет только первая строчка: 'GET /doc1.htm HTTP/1.1'. После &quot;GET&quot; написан путь к запрашиваему документу.
Иногда вместо &quot;GET&quot; там может быть &quot;POST&quot;, но, если ты не собираешся получть какие-нибудь данные от клиента, то это не имеет значения.
561
28 ноября 2001 года
Fly
15 / / 20.12.1999
спасибо.
11K
17 февраля 2006 года
TheFeaR
24 / / 06.01.2006
Надо сделать небольшой сервер...
после запуска сервера и коннекта браузер показывает что он еще чего-то ждет...
вопрос как мне сделать так чтобы при входе на 127.0.0.1 в браузере появляласть строчка-"test"?
Код:
{
WSADATA wsaData;
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
    printf("Error at WSAStartup()\n");
SOCKET m_socket;
m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( m_socket == INVALID_SOCKET ) {
    Label1->Caption="Error at socket(): %ld\n"+WSAGetLastError();
    WSACleanup();
    return;
}
sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr( "127.0.0.1" );
service.sin_port = htons( 80 );
if ( bind( m_socket, (SOCKADDR*) &service, sizeof(service) ) == SOCKET_ERROR ) {
    Label1->Caption="bind() failed.";
    closesocket(m_socket);
    return;
}
if ( listen( m_socket, 1 ) == SOCKET_ERROR )
Label1->Caption="Error listening on socket.";
SOCKET AcceptSocket;
Label1->Caption="Waiting for a client to connect...";
while (1)
{
    AcceptSocket = SOCKET_ERROR;
    while ( AcceptSocket == SOCKET_ERROR )
        {
        AcceptSocket = accept( m_socket, NULL, NULL );
        }
Label1->Caption="Client Connected.";
m_socket = AcceptSocket;
break;
}
char sendbuf[1000] ="200\r\n";
send( m_socket, sendbuf, strlen(sendbuf), 0 );
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог