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 - madox

#1
Que tal eferion gracias por tu interes en mi problema,
sabes que sigo teniendo lio con recv ya que parece que el cliente nunca deja de mandar datos, porque aunque yo no toque ningún botón  el programa sigue corriendo como si recv no fuera bloqueante. Ahora estoy analizando al cliente de esta manera para luego armar la pagina:

if(recv (comm_socket, RecvBuff, sizeof(RecvBuff), 0)){

      armo la página con los cambios
}


apenas cargo la pagina entra al recv.
Habrá otra forma de saber cuando modifica algo el cliente?
#2
el identificador lo obtengo asi;
Primero creo el socket...
   conn_socket=socket(AF_INET,SOCK_STREAM, 0);
al conectarse un cliente abro un nuevo id;
comm_socket=accept(conn_socket,(struct sockaddr *)&client,&stsize);
es asi no?
por eso pongo la condición que me actualiza los valores de la página mientras el socket permanezca activo;
while(comm_socket!=-1)
lo que yo hago, una vez que mando la pagina es :
closesocket(comm_socket);
y vuelvo a esperar conexiones.
#3
Actualizar página de Webserver

Hola comunidad, quiero hacer un server el cual se debe actualizar cuando el cliente modifica algo de la página. Como verán lo hago leyendo el método GET.
El problema es que en la segunda pasada el programa se cuelga. No sé como manejar el socket abierto(la condición para mantener la conexión) . O tal vez queda el buffer de recepción con basura.
¿ Alguna idea?. Gracias por leerme.

La parte en la que armo la página es ésta;


while(1){  
       
             
// Aceptamos conexiones entrantes
  printf("Esperando conexiones entrantes... \n");
  stsize=sizeof(struct sockaddr);  
 
 
  comm_socket=accept(conn_socket,(struct sockaddr *)&client,&stsize);

   
if (comm_socket){
   printf("Conexion entrante desde: %s\n", inet_ntoa(client.sin_addr));
   memset (SendBuff, 0, sizeof SendBuff);
   if(a=1){ //mando la pagina original
   strcpy(SendBuff,pagina);    
   send (comm_socket, SendBuff, sizeof(SendBuff), 0);
   a=0;
   }
   else{
        strcpy(SendBuff,pagina2);    //esta página sera la modificable
        send (comm_socket, SendBuff, sizeof(SendBuff), 0);
        }        
     
     
       if(recv (comm_socket, RecvBuff, sizeof(RecvBuff), 0)){
         
               recv (comm_socket, RecvBuff, sizeof(RecvBuff), 0);
   
                               puts("entre a armar");
         
                               armar_pagina();

  }
                    strcpy(SendBuff,pagina2);
                    puts(pagina2);
                    send (comm_socket, SendBuff, sizeof(SendBuff), 0);  
                    puts("aquiiiiii");
                    closesocket(comm_socket);

}