Submeter dados p/ base dados via SOCK_STREAM

Olá, preciso de criar uma função que deverá fazer a ligação ao porto 80 do servidor “servername” proceder ao envio de um pedido em que a lista de parâmetros/valores do pedido POST é definida com base nos parâmetros dela. Só que após a execução da função, o valor inserido nos parâmetros não está sendo inserido no formulário (PHP) do servidor, mesmo que estejam contidos no buffer.

#include <netdb.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h>  int my_connect(char *servername, char *port); void recv_server_reply(int s); void submeter_dados(char *servername, char *uri, char *plate, char *owner, double value);  char http_msg[] =      "POST %sHTTP/1.1\r\n"     "Host: %s\r\n"     "Content-Type: application/x-www-form-urlencoded\r\n"     "Content-Length: %ld\r\n"     "Connection: close\r\n"     "\r\n"     "%s";  int main (int argc, char* const argv[]) {    //enviar dados   submeter_dados("servidor.pt", "/ficheiro/redirecionado/peloformulario", "PL1819", "John", 5000.0);    return 0; }   void recv_server_reply(int s)  {   char buf[4096];    printf("Reply from server: ");   while(1)    {     int n = read(s, buf, 1);     if(n <= 0)       break;     putchar(buf[0]);     fflush(stdout);     if(buf[0]=='\n')       printf(": ");   }     printf("\n\n"); }   int my_connect(char *servername, char *port) {    //get server address using getaddrinfo   struct addrinfo hints;   struct addrinfo *addrs;   memset(&hints, 0, sizeof(struct addrinfo));   hints.ai_family = AF_INET;   int r = getaddrinfo(servername, port, &hints, &addrs);   if (r != 0) {     fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(r));     exit(1);   }    //create socket   int s = socket(AF_INET, SOCK_STREAM, 0);   if (s == -1) {     perror("socket");       exit(2);   }    //connect to server   r = connect(s, addrs->ai_addr, addrs->ai_addrlen);   if (r == -1) {     perror("connect");       close(s);     exit(3);   }    return s; }  void submeter_dados(char *servername, char *uri, char *plate, char *owner, double value){     int sd = my_connect(severname, "80");      char params[4096];     char buffer[1000];     sprintf(params, "plate=%.6s&owner=%s&value=%.2lf", plate, owner, value);     snprintf(buffer, sizeof(buffer), http_msg, uri, servername, strlen(params), params);      write(sd, buffer, strlen(buffer));      recv_server_reply(sd); } 

Obrigado pela ajuda!