Autor
|
Tema: Trokan.c Ayuda Windows C (Leído 2,250 veces)
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Buenas, estoy programando un mini-server en C, que en Linux he desarrollado bastante mejor, pero necesito en Windows. He escrito este code para ir mejorandolo, pero "algo" hace que se salte el accept y aunque nadie se conecte salta al siguiente paso xD. El code: #include <stdio.h> #include <stdlib.h> #include <winsock.h> int main () { WSADATA wsaData; WSAStartup(MAKEWORD(2, 0), &wsaData); struct sockaddr_in host, client; int a=sizeof (struct sockaddr); SOCKET newsock; SOCKET sockfd=socket (2, 1, 0); host.sin_family=AF_INET; host.sin_addr.s_addr=0; host.sin_port=htons (31337); bind (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr*)); listen (sockfd, 1); while (1) { newsock=accept (sockfd, (struct sockaddr*)&client, &a); send (newsock, "Hola!\n", 6, 0); printf ("Conex. correcta.\n"); closesocket (newsock); } closesocket (sockfd); return 0; }
Qué falla??? Como ven sale infinitamente el printf!!! Y nadie se conecta!!! Y no te puedes conectar!!! Saludos y gracias Saludos
|
|
|
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
|
|
|
clodan
Desconectado
Mensajes: 277
|
mira, puede ser que siga asi porqe entra al while y no lo comparas con nada
osea pones while 1... while 1 que? entendes?
osea si pones while tenes qe poner una condicion, onda while (x<1){} y cosas asi, sino va a seguir repitiendose
|
|
|
En línea
|
|
|
|
bizco
Desconectado
Mensajes: 698
|
no verificas en ningun caso el resultado de las funciones anteriores NECESARIAS para que puedas aceptar conexion alguna. revisa que el fallo esta antes de accept, el tercer parametro de bind no es correcto.
|
|
« Última modificación: 2 Septiembre 2010, 18:06 pm por ctlon »
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Clodan, no es necesario poner nada mas que un uno porque el computer luego lo pasa a ensamblador y ahi lo que queda es hacer la operacion entre parentesis, si la hay y si el resultado es positivo, o sea, diferente de cero, hace lo que viene entre las llaves. Hay que ver como de grande es un code con una sola instruccion WHILE!!!
Ya he visto el fallillo xD no es un puntero. Voy a provarlo ahora mismo. Muxas gracias ctlon. Eso normalmente lo hago despues, pero ya ves xD. Lo hago asi para que mientras escribo el code no sea largo, pero va a ser que no!!!
Saludos y gracias a los dos
|
|
|
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
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
while (1) es un bucle infinito, mejor usar for (;; ) aunque los compiladores modernos no emitan la comparacion redundante con el 1.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
clodan
Desconectado
Mensajes: 277
|
while (1) es un bucle infinito, mejor usar for (;; ) aunque los compiladores modernos no emitan la comparacion redundante con el 1.
Lo mismo me parecio a mi, pero me dijo esto: jjajaja yo no entiendo mucho todavia asi que lo acepte con sabiduria jejeje Clodan, no es necesario poner nada mas que un uno porque el computer luego lo pasa a ensamblador y ahi lo que queda es hacer la operacion entre parentesis, si la hay y si el resultado es positivo, o sea, diferente de cero, hace lo que viene entre las llaves. Hay que ver como de grande es un code con una sola instruccion WHILE!!!
Ya he visto el fallillo xD no es un puntero. Voy a provarlo ahora mismo. Muxas gracias ctlon. Eso normalmente lo hago despues, pero ya ves xD. Lo hago asi para que mientras escribo el code no sea largo, pero va a ser que no!!!
Saludos y gracias a los dos
|
|
|
En línea
|
|
|
|
|
|