как отправить время на сервер с клиента - PullRequest
0 голосов
/ 19 апреля 2020

В моем клиенте. c файл У меня есть этот код

 time_t now;
 struct tm *now_tm;
 int hour;
 int minute;
 int second;

 now = time(NULL);
 now_tm = localtime(&now);
   hour = now_tm->tm_hour;
  minute = now_tm->tm_min;
  second = now_tm->tm_sec;
  printf("%d:%d:%d\n", hour, minute, second");

Я уже установил соединение между клиентом и сервером, и теперь я пытаюсь отправить локальное время клиента на сервер. Но я не уверен, как отправить это время на сервер. Есть ли в C какой-нибудь метод отправки, который принимает 3-х целочисленный аргумент? Может ли кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 19 апреля 2020

предлагает определить struct, который охватывает эти три целых значения. возможно через:

struct myStruct 
{
    int hour;
    int minute;
    int second;
};

объявить экземпляр структуры и заполнить поля:

struct myStruct data;
data.hour   = hour;
data.minute = minute;
data.second = second;

предостережение: убедитесь, что сервер ожидает своего ввода как экземпляр: struct myStruct на указанном c порту с указанным c URL

//socket():
sockfd = socket(AF_INET, SOCK_STREAM, 0); 
if (sockfd == -1) { 
    perror("socket failed"); 
    exit( EXIT_FAILURE ); 
} 

// sockaddr_in:
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET; 

// use server IP4 address in next statement
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); 

// use server port in next statement
servaddr.sin_port = htons(PORT);  

//connect():
if (connect(sockfd, (servAddr*)&servaddr, sizeof(servaddr)) != 0) { 
    perror("connection failed"); 
    exit( EXIT_FAILURE ); 
} 

затем

if( write(sockfd, data, sizeof( struct myStruct )) != sizeof( myStruct ) )
{
    perror( "write to server failed" );
    exit( EXIT_FAILURE );
}

для отправки информации на сервер

...