Using datagram sockets
Using datagram sockets implies a few differences from the preceding schemes. You create a NETWORK_DATAGRAM_SOCKET or a UNIX_DATAGRAM_SOCKET
as before. You do not need to call listen
, accept
or connect
. Once you have created your sockets using the make_client
or make_server
creation procedure, you can use the send
and received
routines, specifying the socket to which you want to send, or from which you want to receive.
The command send
takes an argument of type DATAGRAM_PACKET , and the query received
returns a result of this type. DATAGRAM_PACKET is an heir of class PACKET , itself an heir of ARRAY [ [[ref:libraries/base/reference/character_8_chart|CHARACTER]] ]. Class DATAGRAM_PACKET makes it possible, through the query number
and the associated command set_number
, to associate a packet number with each packet. This compensates for lack of guaranteed sequencing of datagram sockets: the sender can number packets through set_number
, and the receiver can check that all packets have been received through number
, asking the sender to re-emit missing objects.
The text of this example is similar to what appears below (in a more general setting involving event-driven computation) for the next example.