silc_net_udp_connect

SYNOPSIS

    SilcStream
    silc_net_udp_connect(const char *local_ip_addr, int local_port,
                         const char *remote_ip_addr, int remote_port,
                         SilcSchedule schedule);

DESCRIPTION

This function creates UDP stream. The UDP stream is bound to the `local_ip_addr' if it is specified. If `local_port' is non-zero the stream is bound to that port. If the `remote_ip_addr' and `remote_port' is also provided, packets may be sent to that address using silc_stream_write function and packets may be received using silc_stream_read function.

If the remote address is not provided the stream is in connectionless state. This means that packets can be received only by using silc_net_udp_receive and sent only by using the function silc_net_udp_send.

To receive packets the silc_stream_set_notifier must be called for the returned SilcStream. The packets are always received in the notifier callback when the SILC_STREAM_CAN_READ is returned to the callback. To read the packet use silc_stream_read if the `remote_ip_addr' was provided, and silc_net_udp_receive if it was not.

Supports IPv6 if the platform supports it. If `schedule' is NULL this will call silc_schedule_get_global to try to get global scheduler.

EXAMPLE

    SilcStream udpstream;

    // Create UDP stream and prepare to receive packets
    udpstream = silc_net_udp_connect("10.2.1.7", 5000,
                                     "10.2.1.100, 5000, schedule);
    silc_stream_set_notifier(udpstream, schedule, receive_callback, context);

    // Send packet to remote host
    silc_stream_write(udpstream, data, data_len);

    Create UDP listener:

    udpstream = silc_net_udp_connect("0.0.0.0", 500, NULL, 0, schedule);
    silc_stream_set_notifier(udpstream, schedule, receive_callback, context);