| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
cris7ian
Registrado: 19 Nov 2010 Mensajes: 19
| Publicado: 22/11/2010 5:22 am | | | Título: . |
| ejemplo de socket
Ultima edición por cris7ian el 14/12/2010 11:26 am; editado 2 veces |
|
| Volver arriba | |
 |
cris7ian
Registrado: 19 Nov 2010 Mensajes: 19
| Publicado: 22/11/2010 10:41 am | | | Título: |
|
Ultima edición por cris7ian el 14/12/2010 7:51 am; editado 1 vez |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 23/11/2010 5:00 pm | | | Título: |
| Como te comente en otro tema deberias dejar el desarrollo de programas "avanzados" (como el caso de un servidor) para despues, una vez manejes con soltura el lenguaje C.
Sin entrar en el tema de sockets en el programa hay varios errores. Tambien deberias evitar documentar el lenguaje con comentarios como "// fin main" ya que el objetivo de estos es indicar la intencion del programador (y no las reglas del lenguaje).
Un error importante que puede causar que el programa reviente es esta llamada a fprintf:
| Código: | fprintf(archivo, &sin_size); |
Ya que el segundo argumento de la funcion debe ser la direccion donde se localiza la cadena de formato (usualmente utilizando una cadena literal).
Otro detalle problematico es esta sentencia:
| Código: | bzero(&(server.sin_zero), 8); /* escribimos ceros en el reto de la estructura */ |
Solo funciona si tienes la documentacion indicando el orden de los campos, es mejor (por sencillo) utilizar simplemente en la declaracion:
| Código: | struct sockaddr_in server = {0}; |
Una deficiencia son las salidas del programa en caso de error, no es necesario utilizar la funcion "exit", basta con utilizar la palabra reservada "return" indicando el valor de retorno de la funcion (y el programa), por ejemplo:
| Código: | return EXIT_FAILURE; |
Tambien tienes sentencias que no se ejecutaran ya que estan colocadas despues de la sentencia de salida "return 0;":
| Código: | return 0; /* <== Aqui termina el programa */
/* El resto no se ejecuta */ printf("mensaje del equipo: %s\n", inet_ntoa(client.sin_addr) ); close(fd2); /* cierra fd2*/ |
Sin temor a repetir: primero domina el lenguaje y solo despues entra en temas como este.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
|
| Volver arriba | |
 |
|
linkstudios
Registrado: 04 Dic 2010 Mensajes: 16
| Publicado: 07/12/2010 3:20 am | | | Título: |
|
Anda es la misma que encontre yo y me propuse leer! Oy tengo tiempo cristian, me mirare toda la información que tengo y probaré haver si consigo hacer algo, si eso despues te aviso y lo comentamos.
Suerte! _________________ LinkStudios |
|
| Volver arriba | |
 |
cris7ian
Registrado: 19 Nov 2010 Mensajes: 19
| Publicado: 07/12/2010 5:42 am | | | Título: |
| | dale |
|
| Volver arriba | |
 |
|
|