Autor
|
Tema: SOCKET:Se me tilda la ventana. (Leído 3,462 veces)
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
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 .
|
|
|
En línea
|
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
Pon el código para que podamos ver que haces.
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
|
|
|
En línea
|
* 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-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
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_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... } } }
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
#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...
|
|
|
En línea
|
* 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-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
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.
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
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...
|
|
|
En línea
|
* 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-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
No lo avia leido . mmm,no hay otra forma?,
|
|
|
En línea
|
|
|
|
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
mmm,ahora me pongo a ver eso.Otra cosa que se me courrio es de crear otro proseso.
|
|
|
En línea
|
|
|
|
|
|