/
Inicio :: Foros

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

Problema entre cliente y servidor en C

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



Registrado: 30 Jun 2011
Mensajes: 1
Ubicación: concepcion

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