Sieciowa komunikacja procesów - XDR i RPC



Podobne dokumenty
Programowanie z użyciem RPC

Systemy rozproszone. Cezary Sobaniec Marek Libuda. Skrypt do ćwiczeń laboratoryjnych. v1.1 07/09/2006

Zastosowanie narzędzia rpcgen

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Architektura typu klient - serwer. Oprogramowanie systemów równoległych i rozproszonych. Wykład 6. Cechy architektury klient - serwer

Sun RPC/XDR. Dariusz Wawrzyniak 1

external Data Representation

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

Systemy rozproszone. Dr inż. L. Miękina. Department of Robotics and Mechatronics AGH University of Science and Technology 1/1

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

external Data Representation

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Zdalne wywo lywanie procedur Sun RPC

Pobieranie argumentów wiersza polecenia

Programowanie Proceduralne

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Tworzenie aplikacji rozproszonej w Sun RPC

Krótkie wprowadzenie do korzystania z OpenSSL

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

X11R5. .Xresources. Pliki konfiguracyjne X-Windows. Zasada działania X11. .xinitrc. X protocol X server. X client. X library

RPC ZDALNE WYWOŁYWANIE PROCEDUR (ang. Remote Procedure Calls)

Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.

Uzupełnienie dot. przekazywania argumentów

Projektowanie klas c.d. Projektowanie klas przykład

Wykład 1

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;

Co nie powinno być umieszczane w plikach nagłówkowych:

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

1.1 Przykład znajdowanie liczb pierwszych leżących w zadanym zakresie, tryb bezpołączeniowy

Język C - podstawowe informacje

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Programowanie strukturalne i obiektowe

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )

I - Microsoft Visual Studio C++

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Podział programu na moduły

Argumenty wywołania programu, operacje na plikach

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Część 4 życie programu

5 Przygotował: mgr inż. Maciej Lasota

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

C++ język nie dla ludzi o słabych nerwach. Małgorzata Bieńkowska

INSTRUKCJE REPETYCYJNE PĘTLE

Qt sygnały i designer

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Programowanie 2. Język C++. Wykład 1.

Abstrakcyjne struktury danych w praktyce

Plik klasy. h deklaracje klas

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

Wyklad 7 Funkcje (c.d.). Tablice jednowymiarowe znaków

#line #endif #ifndef #pragma

Etapy kompilacji. Wykład 7. Przetwarzanie wstępne, str. 1. #define ILE for(i=0; i<ile; i++)...

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wstęp do programowania 1

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

Podstawy Kompilatorów

int tab_a [ 2 ] [ 3 ];

Języki programowania obiektowego Nieobiektowe elementy języka C++

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

Wstęp do Programowania, laboratorium 02

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Języki programowania - podstawy

Wprowadzenie do programowania i programowanie obiektowe

Protokół ARP. dr Zbigniew Lipiński. Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

Wywoływanie procedur zdalnych

WYKŁAD 4, 5 i 6. Wprowadzenie do języka C Mój pierwszy, drugi,..., n-ty program w języku C. Programy: c1_1.c... c1_9.c.

Driver interfejsu szeregowego dla systemu QNX Neutrino

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

INSTRUKCJE REPETYCYJNE PĘTLE

Podstawy Programowania. Tablice i wskaźniki cd., argumenty wywołania programu, reguły stylu programowania, asercje

Który ciąg instrukcji nada zmiennej n wartość równą ilości liczb w pliku binarnym skojarzonym ze strumieniem fp? Wymierz odpowiedź

Język ludzki kod maszynowy

ISO/ANSI C - biblioteki ISO/ANSI C. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki

Signals + Threads: Qt vs. Boost

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Metody Metody, parametry, zwracanie wartości

Transkrypt:

*** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania i jeden zwracany wynik. Oba musza byc podane w formie wskaznikow Dlatego nalezy definiowac odpowiednie struktury ************************************ struct wejscie int x1; int x2; ; struct wyjscie int suma; int roznica; int iloczyn; ; definicja programu i jego wersji program TESTOWY version PROBNA definicja procedury nr 1 wyjscie OBLICZENIA( wejscie) = 1; = 1; nr wersji = 0x21000000; nr programu Opracował: Zbigniew Suski 1

abc.h * Please do not edit this file. * It was generated using rpcgen. #ifndef _ABC_H_RPCGEN #define _ABC_H_RPCGEN #include <rpc/rpc.h> #ifdef cplusplus extern "C" #endif struct wejscie int x1; int x2; ; typedef struct wejscie wejscie; struct wyjscie int suma; int roznica; int iloczyn; ; typedef struct wyjscie wyjscie; #define TESTOWY 0x21000000 #define PROBNA 1 #if defined( STDC ) defined( cplusplus) #define OBLICZENIA 1 extern wyjscie * obliczenia_1(wejscie *, CLIENT *); extern wyjscie * obliczenia_1_svc(wejscie *, struct svc_req *); extern int testowy_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); #else K&R C #define OBLICZENIA 1 extern wyjscie * obliczenia_1(); extern wyjscie * obliczenia_1_svc(); extern int testowy_1_freeresult (); #endif K&R C the xdr functions #if defined( STDC ) defined( cplusplus) extern bool_t xdr_wejscie (XDR *, wejscie*); extern bool_t xdr_wyjscie (XDR *, wyjscie*); #else K&R C extern bool_t xdr_wejscie (); extern bool_t xdr_wyjscie (); #endif K&R C #ifdef cplusplus #endif #endif!_abc_h_rpcgen Opracował: Zbigniew Suski 2

* Please do not edit this file. * It was generated using rpcgen. abc_xdr.c bool_t xdr_wejscie (XDR *xdrs, wejscie *objp) register int32_t *buf; if (!xdr_int (xdrs, &objp->x1)) if (!xdr_int (xdrs, &objp->x2)) return TRUE; bool_t xdr_wyjscie (XDR *xdrs, wyjscie *objp) register int32_t *buf; if (!xdr_int (xdrs, &objp->suma)) if (!xdr_int (xdrs, &objp->roznica)) if (!xdr_int (xdrs, &objp->iloczyn)) return TRUE; Opracował: Zbigniew Suski 3

* Please do not edit this file. * It was generated using rpcgen. abc_clnt.c #include <memory.h> for memset Default timeout can be changed using clnt_control() static struct timeval TIMEOUT = 25, 0 ; wyjscie * obliczenia_1(wejscie *argp, CLIENT *clnt) static wyjscie clnt_res; memset((char *)&clnt_res, 0, sizeof(clnt_res)); if (clnt_call (clnt, OBLICZENIA, (xdrproc_t) xdr_wejscie, (caddr_t) argp, (xdrproc_t) xdr_wyjscie, (caddr_t) &clnt_res, TIMEOUT)!= RPC_SUCCESS) return (NULL); return (&clnt_res); Opracował: Zbigniew Suski 4

*** Program glowny klienta *** * This is sample code generated by rpcgen. * These are only templates and you can use them * as a guideline for developing your own functions. void testowy_1(char *host, int liczba1, int liczba2) CLIENT *clnt; wyjscie *result_1; wejscie obliczenia_1_arg; #ifndef DEBUG clnt = clnt_create (host, TESTOWY, PROBNA, "udp"); if (clnt == NULL) clnt_pcreateerror (host); exit (1); #endif DEBUG obliczenia_1_arg.x1 = liczba1; obliczenia_1_arg.x2 = liczba2; result_1 = obliczenia_1(&obliczenia_1_arg, clnt); if (result_1 == (wyjscie *) NULL) clnt_perror (clnt, "call failed"); abc_client.c ( część 1) printf("\nwprowadzone dane:\t%d\t%d\n", liczba1, liczba2); printf("\nuzyskane wyniki:\n"); printf("\tsuma:\t\t%d\n\troznica:\t%d\n\tiloczyn:\t%d\n\n", result_1->suma, result_1->roznica, result_1->iloczyn); #ifndef DEBUG clnt_destroy (clnt); #endif DEBUG Opracował: Zbigniew Suski 5

*** Procedura klienta w pliku klient.c *** abc_client.c ( część 2) int main (int argc, char *argv[]) char *host; if (argc < 4) printf ("usage: %s server_host...\n", argv[0]); exit (1); host = argv[1]; testowy_1 (host, atoi(argv[2]), atoi(argv[3])); exit (0); *** Definicja procedury RPC po stronie serwera *** * This is sample code generated by rpcgen. * These are only templates and you can use them * as a guideline for developing your own functions. wyjscie * obliczenia_1_svc(wejscie *argp, struct svc_req *rqstp) static wyjscie result; * insert server code here result.suma = argp->x1 + argp->x2; result.roznica = argp->x1 - argp->x2; result.iloczyn = argp->x1 * argp->x2; return &result; abc_server.c Opracował: Zbigniew Suski 6