Содержимое динамической таблицы в HTML-странице с использованием программирования на C-сокете - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь сделать что-то вроде 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 
           }
      }
  }
}   

Так что проблема в том, что я не знаю, как добавлять строки информации, пока я продолжаю получать сообщения из очереди сообщений. Когда локальный клиент (я) устанавливает временные ограничения, страница обновляется, и я не получаю ответа от сервера. Я новичок в программировании, мне трудно.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...