Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2012, 01:44   #1
Karmadon
Пользователь
 
Аватар для Karmadon
 
Регистрация: 28.02.2012
Сообщений: 46
Сообщение вывод переменных в Веб интерфейс

Может кто встречал?
информацию по теме, а то незнаю даже как подступиться
Нужен вывод в веб интерфейс некоторых переменных
типа контрольной панели - приконектился на порт посмотрел статусы ))
желательно средствами чистого с++ без рантаймов
Спасибо
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
Karmadon вне форума Ответить с цитированием
Старый 11.03.2012, 01:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Т.е. написать свой WEB сервер?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.03.2012, 01:50   #3
Karmadon
Пользователь
 
Аватар для Karmadon
 
Регистрация: 28.02.2012
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Т.е. написать свой WEB сервер?
Отож, что нет, есть много серверов опенсурс, но интересует просто код сервера котрый html будет передавать прямо браузеру без php или html со сторонних файлов
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
Karmadon вне форума Ответить с цитированием
Старый 11.03.2012, 15:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
интересует просто код сервера котрый html будет передавать прямо браузеру без php или html со сторонних файлов
Тоесть написать свой WEB сервер. Не CGI приложение а именно WEB сервер.
http://www.programmersforum.ru/showthread.php?t=184668
Но вместо ShowMessage
Код:
 ResponseInfo.ContentText:='<html><body>страниа</body></html>';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.03.2012, 22:27   #5
Karmadon
Пользователь
 
Аватар для Karmadon
 
Регистрация: 28.02.2012
Сообщений: 46
Печаль

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тоесть написать свой WEB сервер. Не CGI приложение а именно WEB сервер.
http://www.programmersforum.ru/showthread.php?t=184668
Но вместо ShowMessage
Код:
 ResponseInfo.ContentText:='<html><body>страниа</body></html>';
Спасибо, но там же пример Ваш на Делфи, а я вот совсем ничего не понимаю в нем и как его переписать в С++ нималейшего, увы..
Но понят я вроде правильно
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
Karmadon вне форума Ответить с цитированием
Старый 12.03.2012, 00:03   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...вы с сокетами работали?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.03.2012, 00:05   #7
Karmadon
Пользователь
 
Аватар для Karmadon
 
Регистрация: 28.02.2012
Сообщений: 46
Сообщение

Цитата:
Сообщение от raxp Посмотреть сообщение
...вы с сокетами работали?
только учусь, нашел на мсдн пример клиент сервера TCP - пытаюсь выкрутить вывод html на 80 порт
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
Karmadon вне форума Ответить с цитированием
Старый 12.03.2012, 00:23   #8
Karmadon
Пользователь
 
Аватар для Karmadon
 
Регистрация: 28.02.2012
Сообщений: 46
Лампочка Пример вебсервера

Вот переделаный пример - но почему-то работает через раз
серверок при конекте на который отображается веб страничка
Есть у кого идеи?
Код:
#include "stdafx.h"

#define MY_PORT 80 // Порт, который слушает сервер
// макрос для печати количества активных пользователей
#define PRINTNUSERS if (nclients) printf("%d user online\n",nclients);else printf("No User on line\n");
// прототип функции, обслуживающий подключившихся пользователей
DWORD WINAPI SexToClient(LPVOID client_socket);
// глобальная переменная – количество активных пользователей
int nclients = 0;

int main(int argc, char* argv[])
{
char buff[1024]; // Буфер для различных нужд
printf("TCP SERVER DEMO\n");
// Шаг 1  Инициализация Библиотеки Сокетов
// Т. к. возвращенная функцией информация не используется
// ей передается указатель на рабочий буфер, преобразуемый к указателю
// на структуру WSADATA.
// Такой прием позволяет сэкономить одну переменную, однако, буфер
// должен быть не менее полкилобайта размером (структура WSADATA
// занимает 400 байт)

if (WSAStartup(0x0202,(WSADATA *) &buff[0]))
	{
	// Ошибка!
	printf("Error WSAStartup %d\n",WSAGetLastError());
	return 1;
	}

// Шаг 2 создание сокета
SOCKET mysocket;
// AF_INET  сокет Интернета
// SOCK_STREAM  потоковый сокет (с установкой соединения)
// 0  по умолчанию выбирается TCP протокол
if ((mysocket=socket(AF_INET,SOCK_STREAM,0))<0)
	{
	// Ошибка!
	printf("Error socket %d\n",WSAGetLastError());
	WSACleanup(); // Деиницилизация библиотеки Winsock
	return 1;
	}

// Шаг 3 связывание сокета с локальным адресом
sockaddr_in local_addr;
local_addr.sin_family=AF_INET;
local_addr.sin_port=htons(MY_PORT); // не забываем о сетевом порядке!!!
local_addr.sin_addr.s_addr=0; // сервер принимаем подключения
// на все свои IP адреса
// вызываем bind для связывания
if (bind(mysocket,(sockaddr *) &local_addr, sizeof(local_addr)))
{
// Ошибка
printf("Error bind %d\n",WSAGetLastError());
closesocket(mysocket); // закрываем сокет!
WSACleanup();
return 1;
}
// Шаг 4 ожидание подключений
// размер очереди – 0x100
if (listen(mysocket, 0x100))
{
// Ошибка
printf("Error listen %d\n",WSAGetLastError());
closesocket(mysocket);
WSACleanup();
return 1;
}
printf("Ожидание подключений…\n", 
	   setlocale(LC_ALL,"Russian"));
// Шаг 5 извлекаем сообщение из очереди
SOCKET client_socket; // сокет для клиента
sockaddr_in client_addr; // адрес клиента (заполняется системой)

// функции accept необходимо передать размер структуры
int client_addr_size=sizeof(client_addr);
// цикл извлечения запросов на подключение из очереди
while((client_socket=accept(mysocket, (sockaddr *) &client_addr, &client_addr_size)))
{
nclients++; // увеличиваем счетчик подключившихся клиентов
// пытаемся получить имя хоста
HOSTENT *hst;
hst=gethostbyaddr((char *) &client_addr.sin_addr.s_addr,4,AF_INET);
// вывод сведений о клиенте

printf("+%s [%s] new connect!\n",(hst)?hst->h_name:"",inet_ntoa(client_addr.sin_addr));
PRINTNUSERS
// Вызов нового потока для обслужвания клиента
// Да, для этого рекомендуется использовать _beginthreadex
// но, поскольку никаких вызов функций стандартной Си библиотеки
// поток не делает, можно обойтись и CreateThread
DWORD thID;
CreateThread(NULL,NULL,SexToClient,&client_socket,NULL,&thID);
}
return 0;
}
// Эта функция создается в отдельном потоке
// и обсуживает очередного подключившегося клиента независимо от остальных
DWORD WINAPI SexToClient(LPVOID client_socket)
{
    SOCKET my_sock;
    my_sock=((SOCKET *) client_socket)[0];
    char buff[20*1024];
    #define sHELLO "<HTML><HEAD><TITLE>A Small Hello</TITLE></HEAD><BODY><H1>Hi</H1><P>This is very minimal hello world HTML document.</P></BODY></HTML>"
// отправляем клиенту приветствие
    send(my_sock,sHELLO,sizeof(sHELLO),0);
// цикл эхо сервера: прием строки от клиента и возвращение ее клиенту
    int bytes_recv;
        (bytes_recv = recv(my_sock,&buff[0],sizeof(buff),0)) && bytes_recv !=SOCKET_ERROR;
    
        //send(my_sock,&buff[0],bytes_recv,0);
// если мы здесь, то произошел выход из цикла по причине
// возращения функцией recv ошибки – соединение с клиентом разорвано
    nclients--; // уменьшаем счетчик активных клиентов
    printf("disconnect\n"); PRINTNUSERS
// закрываем сокет
    closesocket(my_sock);
return 0;
}
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883

Последний раз редактировалось Karmadon; 12.03.2012 в 04:12.
Karmadon вне форума Ответить с цитированием
Старый 12.03.2012, 11:39   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но там же пример Ваш на Делфи
Согласен затупил
Забыл что речь о Си идет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод переменных из шаблона. bondik PHP 2 02.03.2011 14:55
Вывод переменных в MessageDlg Dmitry96 Помощь студентам 3 31.12.2010 10:47
Интересует веб-программинг: база данных + интерфейс Yevgeniya1979 Фриланс 3 20.10.2010 13:03
Оболочка (интерфейс) для java - веб и десктоп PoMkaNik Общие вопросы по Java, Java SE, Kotlin 3 11.07.2009 15:17