Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/11/2010, 15:15
cris7ian
 
Fecha de Ingreso: noviembre-2010
Mensajes: 9
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Tomar cadena automatica

este es mi código. lo que deseo es que escriba en el archivo.txt la cadena que recibe del puerto, pero automático (este es el socket de servidor nomas porque pq mi puerto esta abierto ese sera mi cliente, este es el que queda escuchando al puerto)
que tengo mal




Código:
/*
 * ConectorUDP.c
 *
 */


#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define PORT 25558 /* El puerto que sera abierto */
#define BACKLOG 2 /* El numero de conexiones permitidas */

main()
{

   int fd, fd2; /* los ficheros descriptores */
   FILE *archivo; // puntero

   struct sockaddr_in server;   /* para la informacion de la direccion del servidor */
   struct sockaddr_in client;   /* para la informacion de la direccion del cliente */

   int sin_size;

   /* A continuaci�n la llamada a socket() */
   if ((fd=socket(AF_INET, SOCK_STREAM, 0)) == -1 ) {
      printf("error en socket()\n");
      exit(-1);
   }

   server.sin_family = AF_INET;

   server.sin_port = htons(PORT); /* le doy el puerto =) */

   server.sin_addr.s_addr = INADDR_ANY; /* asigna IP*/

   bzero(&(server.sin_zero),8); /* escribimos ceros en el reto de la estructura */


   /* llamada a bind() */
   if(bind(fd,(struct sockaddr*)&server, sizeof(struct sockaddr))==-1) {
      printf("error en bind() \n");
      exit(-1);
   }

   if(listen(fd,BACKLOG) == -1) {  /* llamada a listen() */
      printf("error en listen()\n");
      exit(-1);
   }

   while(1) {
      sin_size=sizeof(struct sockaddr_in);    /* llamada a accept() */
      if ((fd2 = accept(fd,(struct sockaddr *)&client, &sin_size))==-1) {
         printf("error en accept()\n");
         exit(-1);
      }
      /*abrimos el archivo y lo escribimos mediante 'a' si no existe lo crea*/

      					archivo=fopen("ConexionUDP.txt", "a");
               	         /*Si no lo logramos abrir, salimos*/
      						if(archivo==NULL)
      							{
      								printf ("No se puede abrir el archivo...");
      								return 1;
      							}

      					/*Escribimos en el archivo*/
               	        fprintf(archivo, &sin_size);


               	        /*Cerramos el archivo*/
               	        fclose(archivo);
               	        return 0;

      printf("mensaje del equipo: %s\n", inet_ntoa(client.sin_addr) );
 

      close(fd2); /* cierra fd2*/

   }// fin while

}// fin main