Я создавал сервер-клиентское приложение на основе RPC.
У меня есть struct
с именем event
, который содержит:
int type_id
long int time
У меня есть функция на сервере, которая возвращает(event*
):
event *
log_1_svc(event *argp, struct svc_req *rqstp)
{
static event* result;
result = (struct event*)malloc (3 * sizeof (struct event));
while (i <3)
{
result[i].type_id = i;
result[i].time = i;
i++;
}
return &result
}
Я хочу получать результаты на клиенте, используя этот указатель.
Вот код на сайте клиента:
log_prog_1(char *host,int client_type,int type_id,long int time)
{
event *result_1;
result_1 = log_1(&log_1_arg, clnt); // this calls the function in server and gurantee that the result is returned an address to pointer
int i =0;
while (i<3)
{
printf ("Type: %d\n",result_1[i].type_id);
printf ("Time: %ld\n",result_1[i].time);
[CODE][/CODE]
i++;
}
}
Этот код работает, но, похоже, он возвращает адреса, а не значения (числа, показанные в клиентском терминале, отличаются от номеров в терминале сервера).
Я попытался разрешить серверу вернуть result
:
return result;
не адрес результата (как написано ранее):
return &result;
Работает, но только первый элемент правильно печатается в клиентском терминале, остальные 2 элемента равны 0.
Пожалуйста, предоставьте мне решение и заранее спасибо:)