xexoandres
Registrado: 30 Jun 2011 Mensajes: 1 Ubicación: concepcion
| Publicado: 30/06/2011 1:23 pm | | | Título: Problema entre cliente y servidor en C |
| Hola amigos saben que un profe nos mando dos archivos que contenian muy poca informacion de echo venian casi vacios y nos pedia que conectaramos el cliente con el servidor, tuve averiguando y use socket para hacer esta coneccion entre estos dos programas, pero no me funciona la coneccion, me tira varios errores, no se que mas pueda hacer necesito que alguien me oriente para poder compilar estos programas sin problemas, aqui les dejo los archivos, trabajo con DEV-C++
Aqui el codigo del cliente.c
| Código: | /************Client.c ***********/ #include <stdio.h> #include <netdb.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #define PUERTO_SERVIDOR 7000 #define ADDR struct sockaddr_in
void format_ip_addr( unsigned int host, char *n );
int main( char argc, char **argv) { ADDR addr; int s; struct hostent *hp_ptr; if( ( s = socket( AF_INET, SOCK_STREAM, 0 ) ) == -1 ) { perror( "Socket" ); exit( 1 ); } if( ( hp_ptr = gethostbyname( argv[1] ) ) == NULL ) { perror( "Gethostbyname" ); exit( 1 ); } bcopy( hp_ptr->h_addr, &( addr.sin_addr.s_addr ), hp_ptr->h_length ); addr.sin_port = htons( atoi( argv[2] ) ); addr.sin_family = AF_INET; if( connect( s, &addr, sizeof( ADDR ) ) != 0 ) { perror( "Connect" ); exit( 1 ); } write( s, argv[3], strlen( argv[3] ) ); close( s ); return( 0 ); } void format_ip_addr( unsigned int host, char *n ) { unsigned char *d; d = ( unsigned char * ) ( &host ); sprintf( n, "%d.%d.%d.%d", d[0], d[1], d[2], d[3] ); }
|
Aqui el codigo del servidor.c
| Código: | /* Server.c */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #define PUERTO_SERVIDOR 7000 #define ADDR struct sockaddr_in #define MAX_MSG_LEN 256 void format_ip_addr( unsigned int host, char *n ); int main( void ) { ADDR addr; int s, sc, fin; if( ( s = socket( AF_INET, SOCK_STREAM, 0 ) ) == -1 ) { perror( "Socket" ); exit( 1 ); } addr.sin_family = AF_INET; addr.sin_port = htons( PUERTO_SERVIDOR ); addr.sin_addr.s_addr = INADDR_ANY; if( bind( s, &addr, sizeof( ADDR ) ) == -1 ) { perror( "Bind" ); exit( 2 ); } if( listen( s, 5 ) == -1 ) { perror( "Listen" ); exit( 3 ); } while( 1 == 1 ) { char buff[ MAX_MSG_LEN ]; ADDR addr_cli; int addr_cli_len; addr_cli_len = sizeof( ADDR ); sc = accept( s, &addr_cli, &addr_cli_len ); if( fork() == 0 ) { char ip_addr[20]; format_ip_addr( addr_cli.sin_addr.s_addr, ip_addr ); /* printf( "Family: %d\n", addr_cli.sin_family ); printf( "Port : %d\n", ntohs( addr_cli.sin_port ) ); printf( "I.P. : %s\n", ip_addr );*/ close( s ); fin=read( sc, buff, MAX_MSG_LEN ); buff[fin]=0; printf( "%s %s\n", ip_addr, buff ); close( sc ); break; } close( sc ); } return( 0 ); } void format_ip_addr( unsigned int host, char *n ) {unsigned char *d; d = ( unsigned char * ) ( &host ); sprintf( n, "%d.%d.%d.%d", d[0], d[1], d[2], d[3] ); }
|
Saludos cordiales, espero respuestas, de antemano muchas gracias. |
|