/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

.

 
      Índice del Foro elrincondelc.com -> Programación en Servidores
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
cris7ian



Registrado: 19 Nov 2010
Mensajes: 19

MensajePublicado: 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

MensajePublicado: 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: 7517
Ubicación: Mexico

MensajePublicado: 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

MensajePublicado: 07/12/2010 3:20 am
Título:

cris7ian escribió:
mediante esta web me oriente un poco pero sigo medio perdidooo!!
ahi les dejo el manual para que me hechen una manito

http://www.chuidiang.com/clinux/sockets/udp/udp.php


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

MensajePublicado: 07/12/2010 5:42 am
Título:

dale
Volver arriba
      Índice del Foro elrincondelc.com -> Programación en Servidores
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com