6.6 UDP protocol support
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
    • Packages
      • SWI-Prolog C-library
        • library(socket): Network socket (TCP and UDP) library
          • UDP protocol support
            • udp_socket/1
            • udp_receive/4
            • udp_send/4
Availability::- use_module(library(socket)).(can be autoloaded)
Sourceudp_send(+Socket, +Data, +To, +Options)
Send a UDP message. Data is a string, atom or code-list providing the data. To is an address of the form Host:Port where Host is either the hostname or a term ip/4. Defined Options are:
encoding(Encoding)
Specifies the encoding to use for the string. See udp_receive/4 for details.
as(Type)
This uses the same values for Type as the as(Type) option of udp_receive/4. The are interpreted differently though. No Type corresponds to CVT_ALL of PL_get_chars(). Using atom corresponds to CVT_ATOM and any of string or codes is mapped to CVT_STRING|CVT_LIST, allowing for a SWI-Prolog string object, list of character codes or list of characters. Finally, term maps to CVT_WRITE_CANONICAL. This implies that arbitrary Prolog terms1write_canonical/2 does not support blobs nor cyclic terms can be sent reliably using the option list [as(term),encoding(utf8)]), using the same option list for udp_receive/4.

A simple example to send UDP data is:

send(Host, Port, Message) :-
        udp_socket(S),
        udp_send(S, Message, Host:Port, []),
        tcp_close_socket(S).

A broadcast is achieved by using tcp_setopt(Socket, broadcast) prior to sending the datagram and using the local network broadcast address as a ip/4 term.