Я пытаюсь сделать что-то вроде IoT-проекта, в котором разные клиенты (веб-браузеры) подключаются к веб-серверу (я запрограммирован на C с использованием сокетов в Linux). Каждый запрос на сервере создает «процесс сына», который заботится о каждом клиенте. По сути, клиент запрашивает информацию, содержащуюся в списке, из файла .csv (где каждая строка списка соответствует определенному времени), отправляя требуемый период времени. В списке есть измерения датчика на строку (идентификатор датчика, температура, влажность и время), и количество измерений не ограничено, при желании их может быть миллион.
Мой подход к достижению этого:
1.- Веб-сервер отправляет HTML-форму, чтобы клиент заполнял пределы желаемого промежутка времени, и они отправлялись через сокеты.
2.- Веб-сервер получает ограничения по времени и ищет в моем списке информацию (строки) в течение требуемого периода времени. Поиск выполняется в другом коде, который я сделал, он работает, просто обратите внимание, что я использую очередь сообщений в качестве механизма IPC, поэтому сервер получает одну строку (сообщение) за раз, а затем структура сообщения перезаписывается значениями следующей строки .
3.- Веб-сервер отправляет список с каждой строкой, чтобы клиент видел запрошенную информацию. Может быть тысячи строк, поэтому я считаю, что мне нужно опубликовать одну строку, поскольку они продолжают поступать из очереди сообщений.
Я мог бы сделать шаги 1 и 2, но не 3. Кажется, я не нашел способа добавить запрошенные строки информации (в идеале в виде таблицы) на уже отправленную веб-страницу с формой в клиент. Упрощенная кодировка СЕРВЕРА следующая:
void main (void) {
//Socket creation and definition
while(1)
{
client_socket=accept(server_socket, ...)
if(!=fork) //son process takes the browser request
{
write(client_socket, webpage, sizeof(webpage)-1);
//webpage is a char containing the HTML form
Then, I receive the time limits and search the lines of info needed
while(//I still receive new line from message queue)
{ msgrcv (new line from file);
write(client_socket, new row, sizeof(new row)-1)
//new row should be a string with an HTML table row. THIS IS THE PART THAT DOES NOT WORK
}
}
}
}
Так что проблема в том, что я не знаю, как добавлять строки информации, пока я продолжаю получать сообщения из очереди сообщений. Когда локальный клиент (я) устанавливает временные ограничения, страница обновляется, и я не получаю ответа от сервера. Я новичок в программировании, мне трудно.
Заранее спасибо.