RPC (Remote Procedure Calls) merupakan metode yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat melakukan nya sebuah server harus menyediakan layanan remote procedure.
TUJUAN RPCRPC digunakan untuk administrasi sistem sehingga seorang administrator jaringan dapat mengakses sistemnya dan mengelola sistemnya darimna saja, selama sistemnya terhubung ke jaringan.
Struktur Protokol Message RPC
Call Message (Dilakukan oleh klien, dimana meminta server untuk mengeksekusi suatu prosedur)
Terdapat nilai-nilai unsigned integer yangdigunakan untuk mengidentifikasi prosedur remote, yang diminta:
1. Nomor Program
2. Nomor Versi dari Program
3. Nomor Prosedur
Reply Message(Dikirimkan oleh server jaringan, bervariasi tergantung apakah call message yang diminta klien diterima atau ditolak)
Mengandung informasi:
1. RPM mengeksekusi call message dengan sukses
2. Implementasi remote tidak sesuai dengan protokol
yang digunakan (versi yang lebih tinggi atau lebih
rendah ditolak)
3. Program remote tidak tersedia pada sistem remote
4. Program remote tidak mendukung versi yang
diminta klien
5. Nomor prosedur yang diminta tidak ada
Project Source Code Aplikasi RPC dengan LINUX RPCGEN
RPCGEN adalah pre-compiler generator interface untuk Sun Microsystems ONC RPC. RPCGEN menggunakan file definisi interface untuk membuat stubs klien dan server di bahasa C.
Yang perlu disiapkan :- VMware (Virtual OS), karena saya menggunakan windows jadi perlu menggunakan VMware untuk dapat menggunakan OS Linux
- OS Linux Ubuntu
- Aplikasi RPCGEN di Linux
Langkah-Langkah :(angkap sudah masuk ke OS Linux Ubuntu)
1. Install aplikasi
RPCGENBuka terminal >
sudo apt-get install rpcbind2. Buat folder di Home dengan nama "
RPC" / terserah anda
3. Buka aplikasi
gedit4. Masukkan source code berikut
struct numbers{
int a;
int b;
};
program tambah_prog{
version tambah_vers{
int tambah(numbers)=1;
}=1;
}=0x23451111;
5. Simpan dengan
extensi .x (contoh :
tambah.x)
6. Generate source code tersebut dengan perintah terminal >
rpcgen -a -C namafile.x7. Compile aplikasi tersebut dengan perintah terminal >
make -f Makefile.namafile8. Edit source code file "
namafile_server.c" sesuaikan dibawah ini (asumsikan namafilenya "tambah")
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "tambah.h"
int *
tambah_1_svc(numbers *argp, struct svc_req *rqstp)
{
static int result;
printf("\n\n ===================================\n");
printf(" PROSES PEMANGGILAN FUNGSI DI SERVER\n");
printf(" Fungsi: tambah(%d, %d) DI PANGGIL\n", argp->a, argp->b);
result = argp->a + argp->b;
return &result;
}
9. Edit source code file "
namafile_client.c" sesuaikan dibawah ini (asumsikan namafilenya "tambah")
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "tambah.h"
void
tambah_prog_1(char *host, int x, int y)
{
CLIENT *clnt;
int *result_1;
numbers tambah_1_arg;
#ifndef DEBUG
clnt = clnt_create (host, tambah_prog, tambah_vers, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
tambah_1_arg.a=x;
tambah_1_arg.b=y;
result_1 = tambah_1(&tambah_1_arg, clnt);
if (result_1 == (int *) NULL) {
clnt_perror (clnt, "call failed");
}
else{
printf("\n\n MEMANGGIL FUNGSI [tambah] DI SERVER\n");
printf(" Hasil Penjumlahan:%d\n",*result_1);
}
#ifndef DEBUG
clnt_destroy (clnt);
#endif /* DEBUG */
}
int
main (int argc, char *argv[])
{
char *host;
if (argc < 4) {
printf("\n\n ERROR FORMAT KURANG HOST dan PARAMETERNYA\n");
printf(" FOTMAT : HOST [NOMOR] [NOMOR]\n");
printf (" usage: %s server_host\n", argv[0]);
exit (1);
}
host = argv[1];
tambah_prog_1 (host, atoi(argv[2]), atoi(argv[3]));
exit (0);
}
10. Selesai
Untuk mensimulasikan ikuti tahapan berikut :
- Lakukan compile terlebih dahulu >
make -f Makefile.namafile- Masuk sebagai server >
sudo ./namafile_server- Masukkan password user os linux
-
Kemudian buka terminal lagi (jadi membuka 2 terminal)
- Masuk sebagai client >
sudo ./namafile_client- Masukkan password user os linux
- JIKA ERROR lengkapi perintah pemanggilan prosedur >
sudo ./namafile_server localhost 20 20- Cek pada sisi client dan sisi server
Terima kasih telah berkunjung disini, silahkan kirimkan komentar dan klik iklan dibawah ini
oleh Rafi Aldiansyah A