The reality is somewhat more complicated.
For example: In theory, the server could be written for Linux and the client could be written for Win32. With RPC, a client can connect to a server running on another platform. This enables you to focus on the details of the application rather than the details of the network. The RPC runtime libraries manage most of the details relating to network protocols and communication. Remote Procedure Call (RPC) defines a powerful technology for creating distributed client/server programs. IDL is an attributed programming language and thus it can describe parameters, functions and interfaces in more detail than C. Writing an IDL file is somewhat like writing a C header file with some additional keywords and constructs. IDL stands for Interface Definition Language and it's a language for defining interfaces (no kidding). In order to use RPC, you need to have some knowledge about IDL, but don't you worry, this article will help you. The matter is, on the other hand, a bit big so I will split it into several articles of different levels of difficulty. I found it strange that no real article existed on this matter here on CodeProject, so I decided to write one of my own to spread my knowledge on this matter. I have worked with client-server applications for a couple of years now, all of these applications use RPC as the layer of communication between the client and the server.