Bom dia
* Consulta a hora do servidor
* Altera(acerta) a hora do servidor
* Descobre o nome do servidor (maquina)
* Altera o nome do servidor (máquina)
* Informa os usuarios " logados" no servidor.

Boa noite estou tentando fazer esses ajustes mas esta meio dificil

poderia me dar uma ajuda obrigado


client.c
/*
* Bibliotecas Padrões que devem ser incluidas
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <signal.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <limits.h>

/*
* Função Principal
*/
int main (int argc, char * argv[])
{
int sock;
struct sockaddr_in server;
struct hostent *hp,
*gethostbyname();
int validacao;
char t[30]="Será que vai funcionar",
c,
resp,
enc = 'f';
FILE *fp,
x;

/*
* Testa quantos argumentos existem na linha de comando
*/
if (argc != 3)
{
printf("Utilização: cli host porta\n");
exit(EXIT_FAILURE);
}
/*
* Cria o descritor do socket e testa se conseguiu
*/
if ((sock = socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("Erro ao criar o socket\n");
exit(1);
}
/*
* Obtém através do retorno da função abaixo uma estrutura
* de dados a partir do nome do host, recebido como primeiro
* parâmetro após o nome do módulo
*/
hp = gethostbyname (argv[1]);
/*
* Forma a partir da estrutura de dados acima o endereço IP
* para realizar a conexão com o servidor
*/
memcpy ((char*)&server.sin_addr, (char*)hp->h_addr, hp->h_length);
/*
* Preenche os demais campos necessários para se conectar
* ao servidor, primeiramente o tipo de conexão (INTERNET)
*/
server.sin_family = AF_INET;
/* e depois especifica o número da porte que se tentará conectar
* ao servidor
*/
server.sin_port = htons(atoi(argv[2]));

/*
* Tenta conectar-se ao servidor, utilizando a variável
* server
*/
if ( connect(sock, (struct sockaddr *)&server, sizeof (server) ) == -1)
{
printf("\nErro de conexão com o servidor através de Socket\n");
exit(1);
}
/*
* A partir deste ponto o cliente já está em comunicação com o
* servidor através do socket ---> sock
*/

/*
* Insira neste ponto todo o código necessário para a comunicação
* cliente/servidor
*/

/*
* O cliente lê do servidor um caracter
*/
validacao = read (sock, (char *) &resp, 1);
/*
* Ecoa no terminal do cliente o caracter recebido do servidor
*/
printf("\nConsegui ler do servidor o caracter: %c\n\n",resp);

/*
* O cliente escreve no servidor uma string de 30 caracteres
*/
validacao = write (sock, (void *)t, 30);
/*
* Ecoa no terminal do cliente a string enviada para o servidor
*/
printf("\nConsegui escrever para o servidor a string: %s\n",t);
}

===============================================

servidor.c
/*
* Bibliotecas Padrões que devem ser incluidas
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <signal.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <limits.h>

/*
* Função Principal
*/
int main (int argc, char * argv[])
{
int sock,
length;
struct sockaddr_in server,
client;
int connected,
validacao;
char t[30],
c,
resp;
FILE *fp,
*x;

/*
* Testa quantos argumentos existem na linha de comando
*/
if (argc != 3)
{
printf("Utilização: socket porta lista_de_espera\n");
exit(EXIT_FAILURE);
}
/*
* Cria o descritor do socket e testa se conseguiu
*/
if ((sock = socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("Erro ao criar o socket\n");
exit(1);
}
/*
* Preenche os demais campos necessários para se conectar
* ao servidor, primeiramente o tipo de conexão (INTERNET)
*/
server.sin_family = AF_INET;
/*
* Peenche o endereço do servidor
*/
server.sin_addr.s_addr = htonl (INADDR_ANY);


/* e depois especifica o número da porte que se tentará conectar
* ao servidor
*/
server.sin_port = htons(atoi(argv[1]));

/*
* Associacao do numero da porta com o socket e o teste
*/
if (bind(sock,(struct sockaddr *)&server,sizeof(server)) == -1)
{
printf("Erro no bind!\n");
exit(1);
}
/*
* Imprime na tela do servidor o num da porta
*/
printf("Socket port #%d\n",ntohs(server.sin_port));
/*
* Espera por tentativas de conexao do cliente e
* maximo de requisicoes de espera
*/
listen(sock,atoi(argv[2]));
length = sizeof (client);
printf("Esperando conexao...\n");
/*
* Aceita a tentativa de conexao do cliente
*/
connected = accept(sock, (struct sockaddr *)&client,&length);
printf("Conectou 1 cliente....\n");
/*
* A partir deste ponto o cliente já está em comunicação com o
* servidor através do socket ---> sock
*/

/*
* Insira neste ponto todo o código necessário para a comunicação
* cliente/servidor
*/

/*
* Le e escreve pelo socket
*/
resp ='A';

/*
* O cliente lê do servidor um caracter
*/
validacao = write (connected, (void *) &resp, 1);
/*
* Ecoa no terminal do cliente o caracter recebido do servidor
*/
printf("\nConsegui escrever para o cliente o caracter: %c\n\n",resp);

/*
* O cliente escreve no servidor uma string de 30 caracteres
*/
validacao = read (connected, (char *) t, 30);
/*
* Ecoa no terminal do cliente a string enviada para o servidor
*/
printf("\nConsegui ler do cliente a string: %s\n",t);
}[/img]