17/11/2010, 15:15
|
| | Fecha de Ingreso: noviembre-2010
Mensajes: 9
Antigüedad: 14 años 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
|