Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Kaxperday

#741
Gracias por tu ayuda eferion, ahora deja a los demás responder, el código ya está posteado no voy a responder preguntas absurdas.

Edito: ¿No ves que si? OMG antes de preguntar dedica un minisegundo a mirar el código
#742
Hago un ping a mi dominio web de ahí obtengo la IP que la defino como variable global en el cliente en C.
#743
Lo inicializo en la sentencia if, una vez ejecuta el else ya debería haber creado el socket.


int main()
{
    WSADATA wsa;
    struct sockaddr_in direccion;
    int sock, puerto=80;
    char buffer[200];
    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);


        strcpy(buffer,"POST /index.php HTTP/1.0\r\n");
        strcat(buffer,"Host: dominio.com\r\n");
        strcat(buffer,"Context-type: application/x-www-form-urlencoded\r\n");
        strcat(buffer,"Content-length: 42\r\n\r\n");
        strcat(buffer,"nombre=nombre123correcto&contenido=123456");
        printf("%s",buffer);

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

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


Este era el php, lo tengo dentro del directorio public_html del servidor web, en el mismo directorio tengo la carpeta archivos donde almacena los archivos que le mando.


<?php
$nombre
=htmlspecialchars($_POST["nombre"]);
$contenido=htmlspecialchars($_POST["contenido"]);
$fp=fopen("./archivos/" $nombre ".txt","at");
fwrite($fp,$contenido);
fclose($fp);
?>



Decir que no es un script como tal, ya que index.php tiene muchas más funciones como tiene divs, menus, etc, quizas si separara el script de php y lo llamase en vez de hacerlo a todo el index funcionaria o igual es indiferente, lo probaré de momento esto es lo que tengo.
#744
No debería de haber problemano he puesto ninguna restricción en ningún directorio, cuando probaba con el GET y metida las variables en la URL desde el navegador las recogia correctamente y se creaba el archivo con su contenido, ahora he cambiado el GET por el POST como dijisteis y el código ahí esta, solo he cambiado la esto:


strcpy(buffer,"POST /index.php HTTP/1.0\r\n");
        strcat(buffer,"Host: dominio.com\r\n");
        strcat(buffer,"Context-type: application/x-www-form-urlencoded\r\n");
        strcat(buffer,"Content-length: 42\r\n\r\n");
        strcat(buffer,"nombre=nombre123correcto&contenido=123456");
        printf("%s",buffer);


Pero sigue sin funcionar, ideas?
#745
Nose trata de eso, no crea ningún archivo, el script funciona con solo poner el nombre (eso hace que cree un archivo con ese nombre y le añade terminacion txt), pero no se crea el archivo a pesar de que envio el nombre, si pongo solo nombre y no contenido da lo mismo ya lo probé xP, no se qué será si tuvieseis algunos apuntes sobre esto, me vendrían muy bien.
#746
Gracias eso he puesto lo demás esta todo igual el programa se ejecuta bien pero sigue sin enviar datos :"""(((( xD
#747
Gracias por tu ayuda compañero me esta siendo útil como aprendizaje, aunque sigue sin ir, te dare más detalles al respecto, es lo mínimo que puedo hacer.

Este es el código php que corre en el index.php del servidor web:

<?php
$nombre
=htmlspecialchars($_GET["nombre"]);
$contenido=htmlspecialchars($_GET["contenido"]);
$fp=fopen("./archivos/" $nombre ".txt","at");
fwrite($fp,$contenido);
fclose($fp);
?>


Entonces yo voy a mi página, pongo en la url las variables dentro de index.php y me crea un archivo con un nombre y un contenido, es simple, desde el navegador funciona sin problemas.

htmlspecialchars recoge los valores de las variables en la url (nombre y contenido) y las asigna a otras variables nombre y contenido.

El código actualizado del cliente que sube los datos es el siguiente:


int main()
{
    WSADATA wsa;
    struct sockaddr_in direccion;
    int sock, puerto=80;
    char buffer[200];
    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);


        strcpy(buffer,"POST /index.php HTTP/1.0\r\n");
        strcat(buffer,"Host: dominioweb.com\r\n");
        strcat(buffer,"Context-type: application/x-www-form-urlencoded\r\n");
        strcat(buffer,"Content-length: 25\r\n\r\n");
        strcat(buffer,"nombre=nombre123correcto");
        printf("%s",buffer);

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

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


Lo he compilado no da errores, la IP del servidor web es correcta, el programa no da ningun error y finaliza satisfactoriamente, sin embargo actualizo la web y no aparece ningún archivo ni ningún tipo de datos, algo ha fallado pues y con lo poco que se no tengo ni idea xP.

Eso es todo compa espero que me podáis ayudar, gracias
#748
int main()
{
   WSADATA wsa;
   struct sockaddr_in direccion;
   int sock, puerto=80;
   char buffer[200];
   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);


       strcpy(buffer,"POST /index.php HTTP/1.0\r\n");
       strcat(buffer,"Host: dominioweb.com\r\n");
       strcat(buffer,"Context-type: application/x-www-form-urlencoded\r\n");
       strcat(buffer,"Content-length: 34\r\n\r\n");
       strcat(buffer,"nombre=yupiiii \r\n");
       printf("%s",buffer);

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

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


Se crea el socket correctamente con la ip del servidor web y con su puerto 80, ahora bien el write da error no consigo enviar datos que me falla? gracias a todos por su ayuda, haber si lo consigo acabar ;)
#749
Cita de: ivancea96 en 20 Julio 2014, 13:43 PM
El POST es así:
POST url HTTP/1.1\r\n
...\r\n
...\r\n
content-length:XXXX\r\n
...\r\n
\r\n    //este salto de línea marca el final de la cabecera
var=datos&var2=datos2


ok, que funcion debería de usar para mandar esta cadena?
#750
Como hago los sockets para enviar el HTTP POST en C, yo se abrir sockets con windows, conecto al servidor web puerto 80, y entonces como hago para subir el archivo, necesito apuntes o código, la idea es subir archivo mediante POST interactuando con server web que recoje variables desde la URL con php, pero no se como lanzar esas variables al servidor en plan :

miweb.com/index.php?var=pass&wew=232323

Por ejemplo, como hago un codigo en C suponiendo sockets abiertos y conectado correctamente para enviar esto a una web

edito: pasame los apuntes para aprender a como hacerlo si no te importa o alguna ayuda no me vendria mal, quiero hacerlo, gracias