Ayuda envío archivo a web con C vía http

Iniciado por Kaxperday, 20 Julio 2014, 12:23 PM

0 Miembros y 2 Visitantes están viendo este tema.

Kaxperday

Bueno aqui sigo, semanas después he probado en TRES ordenadores distintos y no he conseguido hacer funcionar el programa, no consigo enviar el POST.



#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#define ip "67.233.113.145"

int main()
{
    WSADATA wsa;
    struct sockaddr_in direccion;
    int sock, puerto=80,len;
    char buffer[200],cad[20];
    ssize_t n;

    WSAStartup(MAKEWORD(2,0),&wsa);

    if((sock=socket(AF_INET,SOCK_STREAM,0))==-1 )
    {
        printf("Problema al crear el socket");
        getch();
        exit(0);
    }
    else
    {
        direccion.sin_family=AF_INET;
        direccion.sin_port=htons(puerto);
        direccion.sin_addr.s_addr=inet_addr(ip);


        len=strlen("nombre=nombre123correcto&contenido=123456");
        itoa(len,cad,10);
        strcpy(buffer,"POST /index.php HTTP/1.0\r\n");
        strcat(buffer,"Host: mipaginaweb.free33.com\r\n");
        strcat(buffer,"Content-type: application/x-www-form-urlencoded\r\n");
        strcat(buffer,"Content-length: ");
        strcat(buffer,cad);
        strcat(buffer,"\r\n");
        strcat(buffer,"nombre=nombre123correcto&contenido=123456");
        printf("%s\n",buffer);

        if(connect(sock,(struct sockaddr*)&direccion,sizeof(direccion))==-1)
        {
            printf("Error al conectar.\n");
            getch();
            exit(0);
        }
        printf("Conectado correctamente.\n");

        if((send(sock,buffer,strlen(buffer),0))==-1)
        {
            printf("Error Send.\n");
            getch();
            exit(0);
        }
        printf("Send realizado.\n");
    }
    return 0;
}


Así que me estoy preguntando como hiciste tu para que te funcionará el código he probado a compilarlo con codeblocks y con devcpp, pasame el código ocultando datos de IP y de host, porque yo no lo entiendo xD, he probado en windows 7 y 8, y nada OMG
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Pasó mucho tiempo, ya no me acuerdo xd
Pero lo dicho. Intenta conectarte sin POST. Si se realiza correctamente la conexión, y se realiza correctamente una petición básica, prueba con POST.

Kaxperday

Conectarme me conecto (crea socket, connect etc), pero eso de hacerlo sin POST ni idea, el caso si tienes el código por ahí pásamelo por privado si puedes, AUNQUE no veo ningún mensaje no se que me pasa con la bandeja de entrada, te mande 2 o 3 mensajes y la bandeja de salida está vacía, y de entrada igual, así que estos correos no parecen funcionar mucho xd

Edito: xD ya lo siento revivir el tema tras tanto tiempo, pero es que aún no lo he conseguido hacer conectar y es muy frustrante :"""(
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Me refiero a que envíes una petición GET sencilla y que el php pues haga un log. Asegurarte de que se envían datos.

Kaxperday

#74
Así es compa mira, he cambiado en el PHP el POST, por GET, he escrito en la url las variables y se ha creado un archivo con nombre y contenido correctamente.

Es decir el código funciona con el GET, ahora bien lo cambio por POST, uso el programa dice que manda el send con el POST pero no aparece ningún archivo, quizás sea problema de la IP, yo uso la que devuelve el ping al dominio web supongo que sera esa, por lo demás nada nuevo, ah si puse 1.1 en el HTTP

edito: lo estoy probando y nada, no hay manera
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Así por probar, restale 2 al lenght, a ver si va a ser que el lenght se pone erróneamente más grande, y por eso el servidor se queda en espera.

Kaxperday

OHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

OHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

OHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

SIIIIIIIIIIIIIIIIIIIIIIIII, ORGASMO. ADIVINA...

EL CÓDIGO QUE COPIÉ TENÍA PEQUEÑOS ERRORES, PUES ESTOY CON OTRO ORDENADOR Y COPIE EL DE ESTE FORO, LE FALTABA EL HTTP/1.1 YYYY

QUE HAY QUE METER DOS \r\n TRAAS LA CABECERA NO UNO :DDDD

MIL GRACIAS, POR TU ATENCIÓN Y PACIENCIA, PARA LO QUE QUIERAS AQUÍ ESTOY.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

Optimussky

Hola!! soy nuevo en este foro(hoy me he registrado)

Tengo una pregunta.

Y si fuera alrevés?

Tenemos un scrip en C(trabajamos en Arduino) y desde php se envía una URL y quiero obtener los valores de la cadena para tomarlos y darles ese valor al mover un motor, el punto es que lo intentamos haciendo substrings y tomando de la cadena los valores numéricos que darán mayor velocidad o no al motor.

Hay alguna otra forma para obtener los valores de la URL que no sea cortar la cadena y tomar los valores(como que hace crash y se vuelve lento el asunto)

ivancea96

Este tema es dehace 3 años ._.
No se reabren temas antiguos.

~Bienvenido al foro~
Pero crea otro tema con tu problema.

Y ya si creas otro tema, explica mejor esto que comentas.

Citardesde php se envía una URL y quiero obtener los valores de la cadena para tomarlos y darles ese valor al mover un motor
Se envía una URL - valores de la cadena - valores a un motor
What