RPC Programming

Frantisek Krupka krupka na pha.pvt.cz
Úterý Září 16 15:10:52 CEST 1997


Pavel JANIK ml. wrote:
> 
> Ahoj.
> 
> Kdysi tady byl dotaz na programovani RPC. Prede mnou ted lezi Linux
> Journal/ October 1997 a v nem je clanecek Remote Procedure Call vcetne 
> jednoducheho prikladu.
> 

Potkal jsem velice slusnou knihu "Understanding DCE" (dostali jsme ji s
distribuci Pathworks V5.1 pro DOS a Windows fy DEC) , kde jsou i
priklady programovani. 

Dalsim velice sluznym zdrojem je dokumentace dodavana s Digital UNIXem
od verze 4.0 - cast "Programming with ONC RPC". Dokumentace je i v HTML,
uvedena cast ma v komprimovane podobe neco kolem 150 kB (soubory html.gz
a par gifu).

V dokumentaci jsou i zdrojove kody,

Pozn. ONC je zkratka "open network computing"

Obsah (doufam, ze me za to nekdo neumlati):
                                  
Title and Copyright Pages 

About This Manual
Audience
Organization
New and Changed Information
Related Documents
Reader's Comments
Conventions

1    Introduction to Remote Procedure Calls
1.1    The RPC Model
1.2    RPC Procedure Versions
1.3    Using portmap to Determine the Destination Port Number of RPC
Packets
1.4    RPC Independence from Transport Protocol
1.5    External Data Representation (XDR)
1.6    Using rpcinfo to Get RPC Registration Information
1.7    Assigning Program Numbers

2    Writing RPC Applications with the rpcgen Protocol Compiler
2.1    Simple Example: Using rpcgen to Generate Client and Server RPC
Code
2.1.1    RPC Protocol Specification File Describing Remote Procedure
2.1.2    Implementing the Procedure Declared in the Protocol
Specification
2.1.3    The Client Program That Calls the Remote Procedure
2.1.4    Running rpcgen
2.1.5    Compiling the Client and Server Programs
2.1.6    Copying the Server to a Remote Machine and Running It
2.2    Advanced Example: Using rpcgen to Generate XDR Routines
2.2.1    The RPC Protocol Specification
2.2.2    Implementing the Procedure Declared in the Protocol
Specification
2.2.3    The Client Program that Calls the Remote Procedure
2.2.4    Running rpcgen
2.2.5    Compiling the File of XDR Routines
2.2.6    Compiling the Client Side Program with rpcgen Output
2.2.7    Compiling the Server Side Program with rpcgen Output
2.2.8    Running the Remote Directory Program
2.3    Debugging Applications
2.4    The C-Preprocessor
2.5    rpcgen Programming
2.5.1    Network Types
2.5.2    User-Provided Define Statements
2.5.3    inetd Support
2.5.4    Dispatch Tables
2.6    Client Programming
2.6.1    Timeout Changes
2.6.2    Client Authentication
2.7    Server Programming
2.7.1    Handling Broadcasts
2.7.2    Passing Data to Server Procedures
2.8    RPC and XDR Languages
2.8.1    Definitions
2.8.2    Enumerations
2.8.3    Typedefs
2.8.4    Constants
2.8.5    Declarations
2.8.6    Structures
2.8.7    Unions
2.8.8    Programs
2.8.9    Special Cases

3    RPC Programming Interface
3.1    RPC Layers
3.1.1    Middle Layer of RPC
3.1.1.1    Using callrpc
3.1.1.2    Using registerrpc
3.1.1.3    Passing Arbitrary Data Types
3.1.1.4    User-Defined Routines
3.1.1.5    XDR Serializing Defaults
3.1.2    Lowest Layer of RPC
3.1.2.1    The Server Side and the Lowest RPC Layer
3.1.2.2    The Client Side and the Lowest RPC Layer
3.1.2.3    Memory Allocation with XDR
3.2    Raw RPC
3.3    Miscellaneous RPC Features
3.3.1    Using Select on the Server Side
3.3.2    Broadcast RPC
3.3.3    Batching
3.3.4    Authentication of RPC Calls
3.3.5    Authentication Through the Operating System
3.3.5.1    The Client Side
3.3.5.2    The Server Side
3.3.6    Using the Internet Service Daemon (inetd)
3.4    Additional Examples
3.4.1    Program Versions on the Server Side
3.4.2    Program Versions on the Client Side
3.4.3    Using the TCP Transport
3.4.4    Callback Procedures

A    External Data Representation: Technical Notes
A.1    Usefulness of XDR
A.1.1    A Canonical Standard
A.1.2    The XDR Library
A.1.3    XDR Library Primitives
A.1.3.1    Number Filters
A.1.3.2    Floating Point Filters
A.1.3.3    Enumeration Filters
A.1.3.4    Possibility of No Data
A.1.3.5    Constructed Data Type Filters
A.1.3.5.1    Strings
A.1.3.5.2    Byte Arrays
A.1.3.5.3    Arrays
A.1.3.5.4    Opaque Data
A.1.3.5.5    Arrays of Fixed Size
A.1.3.5.6    Discriminated Unions
A.1.3.5.7    Pointers
A.1.4    Non-filter Primitives
A.1.5    XDR Operation Directions
A.1.6    XDR Stream Access
A.1.6.1    Standard I/O Streams
A.1.6.2    Memory Streams
A.1.6.3    Record (TCP/IP) Streams
A.1.7    XDR Stream Implementation
A.2    Advanced Topics

Examples

2-1    Printing a Remote Message Without ONC RPC
2-2    RPC Protocol Specification File, Simple Example
2-3    Remote Procedure Definition
2-4    Client Program that Calls the Remote Procedure
2-5    RPC Protocol Specification File, Advanced Example
2-6    Remote Procedure Implementation
2-7    Client Program that Calls the Server
2-8    Using the Percent Sign to Bypass Interpretation of a Line
2-9    Locating a Procedure in a Dispatch Table
2-10    Using the clnt_control Routine
2-11    XDR enum Before Compilation
2-12    C enum Resulting from Compiling XDR enum
2-13    RPC Program Illustrating Time Protocol
3-1    Using callrpc
3-2    Remote Server Procedure
3-3    Using registerrpc in the Main Body of a Server Program
3-4    Server Program Using Lowest Layer of RPC
3-5    Using Lowest RPC Layer to Control Data Transport and Delivery
3-6    Debugging and Testing Noncommunication Parts of an Application
3-7    Batching RPC Messages
3-8    Client Batching
3-9    Modifying the Remote Users Service
3-10    C Procedure that Returns Two Different Data Types
3-11    Determining Server-Supported Versions and Creating Associated
Client Handles
3-12    RPC Call That Uses TCP Protocol
3-13    Client-Server Usage of gettransient Routine
A-1    Revised Version of writer.c
A-2    Revised Version of reader.c

Figures

1-1    Basic Network Communication with Remote Procedure Call




                                         Krupka F.,


Další informace o konferenci Linux