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

#1
guarda el estado del progreso en una variables.... y cada x tiempo, haz un borrón de la pantalla y pon el estado actual.
#2
Pongo un código de ejemplo, por si alguien  puede ayudarme, viendo el error  por si mismo:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <fcntl.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/time.h>
#define PUERTO 12345

int main()
{
int sockfd,newcon;
struct sockaddr_in cliaddr,seraddr;
struct timeval intervalo;
fd_set fds;
int cliaddrsize;
int recsize;
char recibo[100];
char escribo[100];

intervalo.tv_sec=0; intervalo.tv_usec=100;
bzero(&seraddr,sizeof(struct sockaddr_in));
bzero(&cliaddr,sizeof(struct sockaddr_in));
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(PUERTO);
seraddr.sin_addr.s_addr=INADDR_ANY;
sockfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(bind(sockfd,(struct sockaddr  *) &seraddr,sizeof(struct sockaddr)) | listen(sockfd,20)) { printf("Error bindeando\n"); exit(-1); }
fcntl(sockfd,F_SETFL,O_NONBLOCK);
while(1)
{
newcon=accept(sockfd,(struct sockaddr *) &cliaddr, &cliaddrsize);
if(newcon!=-1)
{
printf("Tenemos a  este pedazo de cabron conectado a nuestro sistema: \n ip: %s\npuerto: %hu\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
if(fork()==0)
{
while(1)
{
FD_ZERO(&fds);
FD_SET(newcon,&fds);
FD_SET(0,&fds);
select(newcon+1,&fds,NULL,NULL,&intervalo);
if(FD_ISSET(newcon,&fds))
{ while((recsize=recv(newcon,recibo,100,0))>0) fwrite(recibo,sizeof(char),recsize,stdout); }
if(FD_ISSET(0,&fds)) { scanf("%[^\n]s",escribo); send(newcon,escribo,strlen(escribo),0); }

}

}

}

}

return 0;
}

#3
Tengo el siguiente problema.... el programa deja pasar un lapso de tiempo y mira si hay algo para leer, tanto en un socket(una conexión), como en la entrada estandar(con la llamada select() ), pero el problema es que cuando recibo del socket algo, el programa ya no es capaz de leer nada de la entrada estandar, es como si el socket bloqueara la entrada o algo. La parte del codigo conflictiva sería algo como sígue:
*Asumimos que la conexión está manejada por el descriptor newcon



while(1)
{
FD_ZERO(&fds);
FD_SET(newcon,&fds);
FD_SET(STDIN_FILENO,&fds);
select(newcon+1,&fds,NULL,NULL,&intervalo);

if(FD_ISSET(newcon,&fds))
{
while(((sizerec=recv(newcon,buffer,BUFFERSIZE,0))>0)
  fwrite(buffer,sizeof(char),sizerec,stdout);
}
if(FD_ISSET(STDIN_FILENO,&fds))
{
scanf("%[^\n]s",envbuffer); // asumimos un buffer muy grande
send(newcon,envbuffer,strlen(envbuffer),0);
}


}



Saludos y gracias
#4
El rendimiento que consiguen esos es sorprendente!
muchas gracias por la info!
El tema del memcached es muy interesante, ya que la mayoría de sitios solicitan muchas veces las mismas cosas a lo largo del día. Supongo que la única pega que podría tener sería si la página tiene que procesar resultados distintos en cada usuario debido a una gran variedad de varíables que cambian.

saludos y gracias
#5
Si alguien te está robando la wifi.... el primer paso es detectarlo, usa alguna herramienta como el nmap para detectarlo y escanearlo. Lo que venga despues dependerán de tús habilidades, y de si eres capaz de detectar algún fallo de su sistema.
Saludos
#6
Desarrollo Web / Re: sobre la optimización de CGI
4 Septiembre 2011, 17:22 PM
se me acaba de ocurrir un segundo planteamiento:
El servidor web puede tener un módulo FastCGI,de ese modo el planteamiento CGI cambia y las variables de entrada y el contenido "POST" ya no se envian por el entorno de variables y por la entrada estandar, sino que todo va por una conexión socket.
Pero en este caso se podría provocar el retraso de una o varias peticiones que el programa esté procesando antes que la tuya.... por tanto ahora el problema del retraso se centra en el programa. Seguramente se pueda plantear de modo que varios procesos esten viendo si hay conexiones(seguramente se necesiten mutex), y varios hilos estén a la espera de procesar, ya que si usamos el planteamiento "fork()" volveremos al mismo problema que teniamos con los cgi's normales.
cómo planteariais el tema del programa en el caso FastCGI??? es posible que el tema de las regiones críticas relentice más que tener a un solo proceso en ese trabajo??? es posible que sea menos costoso crear los hilos en el momento que se necesiten antes que tener a los hilos ejecutados en un while hasta que tengan trabajo????
saludos y gracias por cualquier idea sobre el tema
#7
Desarrollo Web / sobre la optimización de CGI
4 Septiembre 2011, 16:59 PM
Saludos a todos!
Mi objetivo es usar un programa hecho en c para el tema de programación dinámicas de webs!, pero necesito optimizar el tiempo al máximo!! la duda es la siguiente, es posible hacer un programa que tarde lo mínimo en ponerse en funcionamiento, cómo se podría optimizar ese tiempo??? qué factores influyen? y cuanto influyen cada uno de esos factores?
en principio mi idea era, programar la parte más funcional y pesada del programa como si fuera un servidor esperando peticiones y con un montón de hilos abiertos, teniendo la pagina linkeada a un cliente(poco pesado) que se encargara unicamente de hacer las peticiones a la otra parte de ese modo, el retardo se provoca por la apertura de un programa ligero mientas que la parte "gorda" está abierta esperando peticiones, pero ¿es posible que el apache tenga varías instancias del programa "gordo" esperando las peticiones para ahorra tiempo?
agradezco cualquier idea sobre el tema
Saludos y gracias!
#8
GNU/Linux / extraer drivers de un live
19 Julio 2011, 21:23 PM
Mi situción es la siguiente:
Tengo un portatil con procesador amd II neo K145, tarjeta de red atheros AR8151
y tarjeta gráfica ATI radeon HD4225....
Me vino con un windows 7 y estoy teniendo problemas para instalar un Slackware, en primer lugar tuve que cocinar un pen drive para arrancar el instalador desde allí... pero al terminar la instalación me encuentro con que me faltan casí todos los drivers... he arrancado lives cd's como knoppix o backtrack y veo que se detecta casí todo.
¿Sería facil extraer los drivers de los lives para instalarlos en mi distribución instalada en el disco duro? ¿tienene todos los drivers forma de módulo?
saludos y gracias!
#9
Redes / Re: interconexión de nodos
8 Mayo 2011, 14:01 PM
gracias por la respuesta!
he buscado por google y necesito una aclaración...
Imagina que un servidor al que se le han conectado dos usuarios... y en un momento determinado necesito que ambos establezcan una conexión directa.... por tanto uno de ellos tiene que abrir un puerto y el otro conectarse a ese puerto. ¿qué tipo de paquete se le tiene que enviar al router del que tiene que escuchar un puerto para que el router sepa que los paquetes pertenecen a un ordenador(del usuario) concreto(de los muchos que pueden componer su red interna)?
mil gracias!
#10
Redes / interconexión de nodos
8 Mayo 2011, 12:42 PM
Saludos foreros!
Mi duda es sobre el funcionamiento de los mecanismos de determinados programas p2p
Por ejemplo el Skype.... este requiere una conexión directa entre dos usuarios
O cuando se envia un archivo por msn.... mi pregunta es: ¿cómo funciona el mecanismo que permite que se establezca esta conexión pasando por el router de las respectivas redes locales de cada uno?

Sabemos que si nosotros establecemos una conexión con un servidor, nuestro router tiene el mecanismo NAT para saber que los paquetes entrantes de esa conexión deben ir a mi PC.... pero ¿qué ocurre cuando un servidor como el del Skype tiene que hacer que se establezcan una conexión directa entre dos PC's y ninguno de ellos a tenido que configurar su router?
Espero que se entienda mi duda

Saludos y gracias