SOCKET:Se me tilda la ventana.

Iniciado por Destro-, 24 Enero 2011, 19:00 PM

0 Miembros y 1 Visitante están viendo este tema.

Destro-

Holas :).
Tengo un problemita,cuando pongo el socket a la escucha se me tilda la ventana asta q no resiva paquetes :S.Me dan alguna idea de como puedo solucionarlo xD.
Grax  ;D.

Erik#

Pon el código para que podamos ver que haces.

Garfield07



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Destro-

Grax,pero el problema no esta en el socket,we si pero es porq hace una especie de loop infinito asta resiva paquetes :S.

pd:es una ventana GUI.


int resivir
()
{
     
WSADATA wsa;
     
SOCKET sock;
     
struct sockaddr_in local;
     
int len=0;
     
char Buffer[1024];

     
WSAStartup(MAKEWORD(2,0),&wsa);
   
     
sock=socket(AF_INETSOCK_STREAM0);

     
local.sin_family AF_INET;
     
local.sin_addr.s_addr INADDR_ANY;
     
local.sin_port htons(1616);

     if (
bind(sock, (SOCKADDR*) &localsizeof(local))==-1)
     {
         return -
1;
     }

     if (
listen(sock,1)==-1)
     {
         return -
1;
     }
     
len=sizeof(struct sockaddr);


     
sock=accept(sock,(sockaddr*)&local,&len);//cuando llega aca es donde se tilda :S

     
while(len!=0
     {
         
len=recv(sock,Buffer,1023,0); 

         if (
len>0
         {
               
Buffer[len]=0;
               
//code...
          
}
     }
}

Garfield07


#include <winsock2.h>
int main ()
{
     WSADATA wsa;
     SOCKET sock;
     struct sockaddr_in local;
     int len=0;
     char Buffer[1024];

     WSAStartup(MAKEWORD(2,0),&wsa);
   
     sock=socket(AF_INET, SOCK_STREAM, 0);

     local.sin_family = AF_INET;
     local.sin_addr.s_addr = INADDR_ANY;
     local.sin_port = htons(1616);

     if (bind(sock, (SOCKADDR*) &local, sizeof(local))==-1)
     {
         return -1;
     }

     if (listen(sock,1)==-1)
     {
         return -1;
     }
     len=sizeof(struct sockaddr);


     sock=accept(sock,(sockaddr*)&local,&len);//cuando llega aca es donde se tilda :S

     while(len!=0)
     {
         len=recv(sock,Buffer,1023,0);

         if (len>0)
         {
               Buffer[len]=0;
               //code...
          }
     }
}


Vale, no entiendo que quieres decir con "se tilda". Se queda en un bucle infinito? Si es eso lo que pasa es que cuando tu cliente se desconecta no manda nada. Yo lo que hago es

         if (len>2)
         {
               Buffer[len]=0;
               //code...
          }

\r\n == Enter en clientes...

Si te has programado tu el cliente, pon el code tmb. Si no, di cual usas...
Para el NC eso asi va bien... cuando el cliente meta un Enter sales del bucle
Y otra cosa, lo de Buffer [len]=0; no tiene ningún sentido. Para que es? Si es para acabar la cadena se suele poner \0. Pero recuerda lo de \r\n

Si no es, explicanos tu problema...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Destro-

Grax,pero no es el while,es:

sock=accept(sock,(sockaddr*)&local,&len);

:S,

pd:cuando digo q se tilda es como un bucle infinito,tengo q cerrarlo con el aministrador de tareas :S.

Garfield07

Te has leido lo que te dije? Vamos a ver, en el tuto pongo muy claro que accept deja el programa en pausa hasta que se conecta alguien. Haz un nc -vv localhost 31337 (o tu puerto) y sigues...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Destro-

No lo avia leido  :-[.
mmm,no hay otra forma?,

Garfield07

Si que la hay. Podrias probar a usar telnet o puedes descargar un code del foro.
Si usas Win Vista / 7 tienes que activar el telnet.
http://www.google.es/#sclient=psy&hl=es&q=activar+telnet+en+windows+7&aq=4&aqi=g5&aql=&oq=&pbx=1&fp=ae772f8ffcd452a1


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Destro-

mmm,ahora me pongo a ver eso.Otra cosa que se me courrio es de crear otro proseso.