SKR 5302: Advanced Distributed Computing
4. Chapter 4: Inter-process Communication
4.9. Connection-oriented & Connectionless Datagram Socket
Connection-oriented & Connectionless Datagram Socket
Datagram sockets can support both connectionless and connection-oriented communication at the application layer.
- This is so because even though datagrams are sent or received without the notion of connections at the transport layer, the runtime support of the socket API can create and maintain logical connections for datagrams exchanged between two processes.
- The runtime support of an API is a set of software that is bound to the program during execution in support of the API.
The Java Datagram Socket API
In Java, two classes are provided for the datagram socket API:
- the DatagramSocket class for the sockets.
- the DatagramPacket class for the datagram exchanged.
A process wishing to send or receive data using this API must instantiate a DatagramSocket object, or a socket in short. Each socket is said to be bound to a UDP port of the machine on which the process is running. To send a datagram to another process, a sending process:
- Creates an object that represents the datagram itself. This object can be created by instantiating a DatagramPacket object which carries
- the payload data as a reference to a byte array, and
- the destination address (the host ID and port number to which the receiver’s socket is bound).
- Issues a call to a send method in the DatagramSocket object, specifying a reference to the DatagramPacket object as an argument.
In the receiving process, a DatagramSocket object must also be instantiated and bound to a local port, the port number must agree with that specified in the datagram packet of the sender.
To receive datagrams sent to the socket, the receiving process creates a DatagramPacket object which references a byte array and calls a receive method in its DatagramSocket object, specifying as argument a reference to the DatagramPacket object.