Как я могу получить содержимое метода post, отправленное из формы на ту же страницу моего http-сервера, написанное на c? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть очень простой http-сервер, написанный на C в Unix с использованием сокетов и прочего.Сервер показывает клиенту приветственное сообщение и форму с вводом имени пользователя и пароля, используя метод post, теперь мне нужно получить содержимое и сравнить со статической строкой, чтобы провести какое-то подтверждение, как я могу получить содержимое?

int main(int argc, char const *argv[])
{
    int server_fd, new_socket; long valread;
    struct sockaddr_in address;
    int addrlen = sizeof(address);

    char *hello1 = "HTTP/1.1 200 OK\nContent-Type: text/html\n\n Hello World ";
    char *hello2 = "<form action=\"\" method=\"post\">"
    "Usuario: <input type=\"text\" >"
    "Senha: <input type=\"text\" value=\"\">"
    "<input type=\"submit\" value=\"Entrar\">"
    "</form>";

    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
    {
        perror("socket aberto");
        exit(EXIT_FAILURE);
    }


    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(PORT);

    memset(address.sin_zero, '\0', sizeof address.sin_zero);


    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0)
    {
        perror("bindando");
        exit(EXIT_FAILURE);
    }
    if (listen(server_fd, 10) < 0)
    {
        perror("Ouvindo");
        exit(EXIT_FAILURE);
    }
    while(1)
    {
        printf("\n+++++++ Aguardando conexão++++++++\n\n");
        if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0)
        {
            perror("Aceito");
            exit(EXIT_FAILURE);
        }

        char buffer[30000] = {0};
        valread = read( new_socket , buffer, 30000);
        printf("%s\n",buffer );

        write(new_socket , hello1 , strlen(hello1));
        write(new_socket , hello2 , strlen(hello2));

        printf("------------------Menssagem HELLO enviada-------------------\n");
        close(new_socket);

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