Typically, applications can use IPC categorized as clients and servers, where the client requests data and the server provides a response.
Many applications are both clients and servers, as commonly seen in distributed computing.
Methods for achieving Inter-Process Communication are divided into categories which vary based on software requirements, such as performance and modularity requirements, and system circumstances, such as network bandwidth and latency.