URGENTE AYUDA!!! Cliente/Servidor Cn SOKETS Que tire La Hora al Sistema

Imagen de marianopp
0 puntos

Holas... Ando nesecitando ayuda urgente para un programita que tengo que hacer para la facultad...

Lo que tengo que hacer es Crear un Cliente y un servidor en una misma pc , y que el clietne le pida la hora al servidor y el servidor lea la hora del sistema y se la pase al Cliente.

Bajo Linux Oviamente...

Lo que pude hacer mirando y leyendo es conectar el cliente y el servidor...
Pero no se como hacer para q el Servidor lea la hora del Sistema y se la pase al clietne en pantalla.

q diga "La hora del sistema segun el servidor conectado es : hh/mm/ss

Se que no es muy complejo pero me ah costado abstante llegar hasta esto y nesesito ayuda por favor de alguien q la tenga clara...

Les paso lo q logre hacer.

CLIENTE:
-------

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define PORT 3490 // puerto al que vamos a conectar

#define MAXBUFLEN 100 // Maximo de caracteres para el buffer

using namespace std;
int sockfd, numbytes;
struct hostent *he;
struct sockaddr_in their_addr; // información de la dirección de destino
size_t len;
char buf[MAXBUFLEN];
struct sockaddr_in timeServer;
struct sockaddr_in timeClient;

void crear_socket();
void conectar();
void atributos();
void host_name(char *argv[]);

int main (int argc, char *argv[])
{
if (argc != 2)
{
fprintf(stderr,"usaste solo: %d argumento, escribe también el nombre del servidor\n",argc);
exit(1);
}
host_name(argv);
crear_socket();
atributos();
conectar();
}

void host_name(char *argv[])//Se utiliza para convertir un nombre de un host a su dirección IP
{
if ((he=gethostbyname(argv[1])) == NULL)
{
perror("gethostbyname");
exit(1);
}
}

void crear_socket()//se crea el socket para comunicarse con el servidor
{
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit(1);
}
}

void atributos()//definimos el tipo de transferencia,puerto y la ip con la que nos vamos a comunicar
{
len = sizeof(struct sockaddr_in);
their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(PORT);
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
memset(&(their_addr.sin_zero), 8, len);
}

void conectar()// nos conectamos con el servidor
{
if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)
{
perror("connect");
exit(1);
}
}

SERVIDOR
--------

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define MYPORT 3490 // Puerto al que conectarán los usuarios
#define MAXBUFLEN 200 // Maximo de caracteres para el buffer
#define BACKLOG 10 // Conexiones pendientes en cola

#define MAX 100
int longitud;//LONGITUD DE LA CADENA ENTRADA
int sockfd;
struct sockaddr_in timeServer;
struct sockaddr_in timeClient;
int cont;
socklen_t sin_size;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int newfd;
char buf[MAXBUFLEN];
time_t rawtime;
struct tm * timeinfo;

void crear_socket();
void atributos();
void socket_name();
void escuchar();
void aceptar();

int main (int argc, char *argv[])
{
crear_socket();
atributos();
socket_name();
escuchar();
while(1) // ciclo para llamar accept
{
cont=0; // Llamamos a fork() para crear un proceso hijo que atendera a la conexion recien establecida
aceptar();
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "The current date/time is: %s", asctime (timeinfo) );
}

}

void crear_socket()//se crea el medio por el cual se va a realizar la comunicación:
{
//AF_INET = Dominio donde se realiza la conexión.( unidos mediante una red TCP/IP).
//SOCK_STREAM = Uso del protocolo TCP
//0 = selecciona el protocolo más apropiado

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)//Crea el socket y verifica si hubo algun error

-------------

PLEACE AYUDENMEE!!! MUCHAS GRACIAS DE ANTEMANO!!!

Imagen de marianopp
+1
0
-1

Me olvide decir.. q es mediante sockets la cosa.. obviamente.

+1
0
-1