Я пишу программу, которая делает RPC для печати сообщения, которое я отправляю в качестве параметра удаленной функции. Удаленная функция не должна ничего возвращать, однако просто из любопытства я разработала удаленную функцию для возврата целого числа.
В любом случае, все работало нормально, и я смог распечатать сообщение удаленно. Сейчас я пытаюсь создать две версии программы в файле XDR (просто любопытно !!!), но у меня это не получается.
вот мой новый файл XDR
anirudh@anirudh-Aspire-5920:~/Documents/C/DS/RPC$ cat spec.x
program MSGPROG{
version PRINTMSGVERSION{
int PRINTMSG(string) = 1;
} = 1;
version PRINTMSGVERSION{
int PRINTMSG(string) = 1;
} = 2;
} = 0x2000001;
Вот код сервера:
anirudh@anirudh-Aspire-5920:~/Documents/C/DS/RPC$ cat server.c
#include<stdio.h>
#include "spec.h"
int *printmsg_1_svc(char **msg,struct svc_req * sr){
static int ret;
printf("version = 1--%s\n",*msg);
ret = 1;
return &ret;
}
int *printmsg_2_svc(char **msg,struct svc_req * sr){
static int ret;
printf("version = 2--%s\n",*msg);
ret = 1;
return &ret;
}
Вот ошибки, которые я получаю во время компиляции:
anirudh@anirudh-Aspire-5920:~/Documents/C/DS/RPC$ rpcgen -C spec.x
anirudh@anirudh-Aspire-5920:~/Documents/C/DS/RPC$ gcc server.c spec_svc.c -o ani_server -lnsl
In file included from server.c:2:
spec.h:32: warning: "PRINTMSGVERSION" redefined
spec.h:18: note: this is the location of the previous definition
In file included from spec_svc.c:6:
spec.h:32: warning: "PRINTMSGVERSION" redefined
spec.h:18: note: this is the location of the previous definition
Итак, ошибка идет, потому что я не могу понять, как объявить две версии программы в файле XDR. Большое спасибо за чтение моего поста. Пожалуйста, помогите мне. Заранее спасибо.