Reference Manual
Release Notes
PDF
Top

Kernel
Reference Manual
Version 3.0

Expand All
Contract All

Table of Contents

- kernel (App)
- application
  - Top of manual page
  - get_all_env/0
  - get_all_env/1
  - get_all_key/0
  - get_all_key/1
  - get_application/0
  - get_application/1
  - get_env/1
  - get_env/2
  - get_env/3
  - get_key/1
  - get_key/2
  - load/1
  - load/2
  - loaded_applications/0
  - permit/2
  - set_env/3
  - set_env/4
  - ensure_started/1
  - ensure_started/2
  - ensure_all_started/1
  - ensure_all_started/2
  - start/1
  - start/2
  - start_type/0
  - stop/1
  - takeover/2
  - unload/1
  - unset_env/2
  - unset_env/3
  - which_applications/0
  - which_applications/1
  - Module:start/2
  - Module:start_phase/3
  - Module:prep_stop/1
  - Module:stop/1
  - Module:config_change/3
- auth
  - Top of manual page
  - is_auth/1
  - cookie/0
  - cookie/1
  - node_cookie/1
  - node_cookie/2
- code
  - Top of manual page
  - set_path/1
  - get_path/0
  - add_path/1
  - add_pathz/1
  - add_patha/1
  - add_paths/1
  - add_pathsz/1
  - add_pathsa/1
  - del_path/1
  - replace_path/2
  - load_file/1
  - load_abs/1
  - ensure_loaded/1
  - load_binary/3
  - delete/1
  - purge/1
  - soft_purge/1
  - is_loaded/1
  - all_loaded/0
  - which/1
  - get_object_code/1
  - root_dir/0
  - lib_dir/0
  - lib_dir/1
  - lib_dir/2
  - compiler_dir/0
  - priv_dir/1
  - objfile_extension/0
  - stick_dir/1
  - unstick_dir/1
  - is_sticky/1
  - rehash/0
  - where_is_file/1
  - clash/0
  - is_module_native/1
  - get_mode/0
- disk_log
  - Top of manual page
  - accessible_logs/0
  - alog/2
  - balog/2
  - alog_terms/2
  - balog_terms/2
  - block/1
  - block/2
  - change_header/2
  - change_notify/3
  - change_size/2
  - chunk/2
  - chunk/3
  - bchunk/2
  - bchunk/3
  - chunk_info/1
  - chunk_step/3
  - close/1
  - format_error/1
  - inc_wrap_file/1
  - info/1
  - lclose/1
  - lclose/2
  - log/2
  - blog/2
  - log_terms/2
  - blog_terms/2
  - open/1
  - pid2name/1
  - reopen/2
  - reopen/3
  - breopen/3
  - sync/1
  - truncate/1
  - truncate/2
  - btruncate/2
  - unblock/1
- erl_boot_server
  - Top of manual page
  - start/1
  - start_link/1
  - add_slave/1
  - delete_slave/1
  - which_slaves/0
- erl_ddll
  - Top of manual page
  - demonitor/1
  - info/0
  - info/1
  - info/2
  - load/2
  - load_driver/2
  - monitor/2
  - reload/2
  - reload_driver/2
  - try_load/3
  - try_unload/2
  - unload/1
  - unload_driver/1
  - loaded_drivers/0
  - format_error/1
- erl_prim_loader
- erlang
- error_handler
  - Top of manual page
  - undefined_function/3
  - raise_undef_exception/3
  - undefined_lambda/3
- error_logger
  - Top of manual page
  - error_msg/1
  - error_msg/2
  - format/2
  - error_report/1
  - error_report/2
  - warning_map/0
  - warning_msg/1
  - warning_msg/2
  - warning_report/1
  - warning_report/2
  - info_msg/1
  - info_msg/2
  - info_report/1
  - info_report/2
  - add_report_handler/1
  - add_report_handler/2
  - delete_report_handler/1
  - tty/1
  - logfile/1
- file
  - Top of manual page
  - advise/4
  - allocate/3
  - change_group/2
  - change_mode/2
  - change_owner/2
  - change_owner/3
  - change_time/2
  - change_time/3
  - close/1
  - consult/1
  - copy/2
  - copy/3
  - del_dir/1
  - delete/1
  - eval/1
  - eval/2
  - file_info/1
  - format_error/1
  - get_cwd/0
  - get_cwd/1
  - list_dir/1
  - list_dir_all/1
  - make_dir/1
  - make_link/2
  - make_symlink/2
  - native_name_encoding/0
  - open/2
  - path_consult/2
  - path_eval/2
  - path_open/3
  - path_script/2
  - path_script/3
  - pid2name/1
  - position/2
  - pread/2
  - pread/3
  - pwrite/2
  - pwrite/3
  - read/2
  - read_file/1
  - read_file_info/1
  - read_file_info/2
  - read_line/1
  - read_link/1
  - read_link_all/1
  - read_link_info/1
  - read_link_info/2
  - rename/2
  - script/1
  - script/2
  - set_cwd/1
  - sync/1
  - datasync/1
  - truncate/1
  - sendfile/2
  - sendfile/5
  - write/2
  - write_file/2
  - write_file/3
  - write_file_info/2
  - write_file_info/3
- gen_tcp
  - Top of manual page
  - connect/3
  - connect/4
  - listen/2
  - accept/1
  - accept/2
  - send/2
  - recv/2
  - recv/3
  - controlling_process/2
  - close/1
  - shutdown/2
- gen_udp
  - Top of manual page
  - open/1
  - open/2
  - send/4
  - recv/2
  - recv/3
  - controlling_process/2
  - close/1
- gen_sctp
  - Top of manual page
  - abort/2
  - close/1
  - connect/4
  - connect/5
  - connect_init/4
  - connect_init/5
  - controlling_process/2
  - eof/2
  - listen/2
  - open/0
  - open/1
  - open/2
  - peeloff/2
  - recv/1
  - recv/2
  - send/3
  - send/4
  - error_string/1
- global
  - Top of manual page
  - del_lock/1
  - del_lock/2
  - notify_all_name/3
  - random_exit_name/3
  - random_notify_name/3
  - register_name/2
  - register_name/3
  - registered_names/0
  - re_register_name/2
  - re_register_name/3
  - send/2
  - set_lock/1
  - set_lock/2
  - set_lock/3
  - sync/0
  - trans/2
  - trans/3
  - trans/4
  - unregister_name/1
  - whereis_name/1
- global_group
  - Top of manual page
  - global_groups/0
  - info/0
  - monitor_nodes/1
  - own_nodes/0
  - registered_names/1
  - send/2
  - send/3
  - sync/0
  - whereis_name/1
  - whereis_name/2
- heart
  - Top of manual page
  - set_cmd/1
  - clear_cmd/0
  - get_cmd/0
- inet
  - Top of manual page
  - close/1
  - get_rc/0
  - format_error/1
  - getaddr/2
  - getaddrs/2
  - gethostbyaddr/1
  - gethostbyname/1
  - gethostbyname/2
  - gethostname/0
  - getifaddrs/0
  - getopts/2
  - getstat/1
  - getstat/2
  - ntoa/1
  - parse_ipv4_address/1
  - parse_ipv4strict_address/1
  - parse_ipv6_address/1
  - parse_ipv6strict_address/1
  - parse_address/1
  - parse_strict_address/1
  - peername/1
  - peernames/1
  - peernames/2
  - port/1
  - sockname/1
  - socknames/1
  - socknames/2
  - setopts/2
- inet_res
  - Top of manual page
  - getbyname/2
  - getbyname/3
  - gethostbyaddr/1
  - gethostbyaddr/2
  - gethostbyname/1
  - gethostbyname/2
  - gethostbyname/3
  - lookup/3
  - lookup/4
  - lookup/5
  - resolve/3
  - resolve/4
  - resolve/5
  - nslookup/3
  - nslookup/4
  - nnslookup/4
  - nnslookup/5
- init
- net_adm
  - Top of manual page
  - dns_hostname/1
  - host_file/0
  - localhost/0
  - names/0
  - names/1
  - ping/1
  - world/0
  - world/1
  - world_list/1
  - world_list/2
- net_kernel
  - Top of manual page
  - allow/1
  - connect_node/1
  - monitor_nodes/1
  - monitor_nodes/2
  - get_net_ticktime/0
  - set_net_ticktime/1
  - set_net_ticktime/2
  - start/1
  - start/1
  - start/1
  - stop/0
- os
  - Top of manual page
  - cmd/1
  - find_executable/1
  - find_executable/2
  - getenv/0
  - getenv/1
  - getpid/0
  - putenv/2
  - timestamp/0
  - type/0
  - unsetenv/1
  - version/0
- pg2
  - Top of manual page
  - create/1
  - delete/1
  - get_closest_pid/1
  - get_members/1
  - get_local_members/1
  - join/2
  - leave/2
  - which_groups/0
  - start/0
  - start_link/0
- rpc
  - Top of manual page
  - call/4
  - call/5
  - block_call/4
  - block_call/5
  - async_call/4
  - yield/1
  - nb_yield/1
  - nb_yield/2
  - multicall/3
  - multicall/4
  - multicall/5
  - cast/4
  - eval_everywhere/3
  - eval_everywhere/4
  - abcast/2
  - abcast/3
  - sbcast/2
  - sbcast/3
  - server_call/4
  - multi_server_call/2
  - multi_server_call/3
  - safe_multi_server_call/2
  - safe_multi_server_call/3
  - parallel_eval/1
  - pmap/3
  - pinfo/1
  - pinfo/2
- seq_trace
  - Top of manual page
  - set_token/1
  - set_token/2
  - get_token/0
  - get_token/1
  - print/1
  - print/2
  - reset_trace/0
  - set_system_tracer/1
  - get_system_tracer/0
- user
- wrap_log_reader
  - Top of manual page
  - chunk/1
  - chunk/2
  - close/1
  - open/1
  - open/2
- zlib
- app
- config

# gen_udp

### MODULE

gen_udp

### MODULE SUMMARY

Interface to UDP sockets

### DESCRIPTION

The gen_udp module provides functions for communicating with sockets using the UDP protocol.

### DATA TYPES

option() = {active, true | false | once | -32768..32767}
| {add_membership,
{inet:ip_address(), inet:ip_address()}}
| {broadcast, boolean()}
| {buffer, integer() >= 0}
| {deliver, port | term}
| {dontroute, boolean()}
| {drop_membership,
{inet:ip_address(), inet:ip_address()}}
| {header, integer() >= 0}
| {high_msgq_watermark, integer() >= 1}
| {low_msgq_watermark, integer() >= 1}
| {mode, list | binary}
| list
| binary
| {multicast_if, inet:ip_address()}
| {multicast_loop, boolean()}
| {multicast_ttl, integer() >= 0}
| {priority, integer() >= 0}
| {raw,
Protocol :: integer() >= 0,
OptionNum :: integer() >= 0,
ValueBin :: binary()}
| {read_packets, integer() >= 0}
| {recbuf, integer() >= 0}
| {reuseaddr, boolean()}
| {sndbuf, integer() >= 0}
| {tos, integer() >= 0}
| {ipv6_v6only, boolean()}

option_name() = active
| broadcast
| buffer
| deliver
| dontroute
| header
| high_msgq_watermark
| low_msgq_watermark
| mode
| multicast_if
| multicast_loop
| multicast_ttl
| priority
| {raw,
Protocol :: integer() >= 0,
OptionNum :: integer() >= 0,
ValueSpec :: (ValueSize :: integer() >= 0)
| (ValueBin :: binary())}
| read_packets
| recbuf
| reuseaddr
| sndbuf
| tos
| ipv6_v6only

socket()

As returned by open/1,2.

### EXPORTS

open(Port) -> {ok, Socket} | {error, Reason}
open(Port, Opts) -> {ok, Socket} | {error, Reason}

Types:

Port = inet:port_number()
Opts = [Option]
Option = {ip, inet:ip_address()}
| {fd, integer() >= 0}
| {ifaddr, inet:ip_address()}
| inet:address_family()
| {port, inet:port_number()}
| option()
Socket = socket()
Reason = inet:posix()

Associates a UDP port number (Port) with the calling process.

The available options are:

list

  Received Packet is delivered as a list.

binary

  Received Packet is delivered as a binary.

{ip, ip_address()}

  If the host has several network interfaces, this option specifies which one to use.

{ifaddr, ip_address()}

  Same as {ip, ip_address()}. If the host has several network interfaces, this option specifies which one to use.

{fd, integer() >= 0}

  If a socket has somehow been opened without using gen_udp, use this option to pass the file descriptor for it.

inet6

  Set up the socket for IPv6.

inet

  Set up the socket for IPv4.

{udp_module, module()}

  Override which callback module is used. Defaults to inet_udp for IPv4 and inet6_udp for IPv6.

{multicast_if, Address}

  Set the local device for a multicast socket.

{multicast_loop, true | false}

  When true sent multicast packets will be looped back to the local sockets.

{multicast_ttl, Integer}

  The multicast_ttl option changes the time-to-live (TTL) for outgoing multicast datagrams in order to control the scope of the multicasts.

  Datagrams with a TTL of 1 are not forwarded beyond the local network.
  Default: 1

{add_membership, {MultiAddress, InterfaceAddress}}

  Join a multicast group.

{drop_membership, {MultiAddress, InterfaceAddress}}

  Leave multicast group.

Opt

  See inet:setopts/2.

The returned socket Socket is used to send packets from this port with send/4. When UDP packets arrive at the opened port, if the socket is in an active mode the packets are delivered as messages to the controlling process:

    {udp, Socket, IP, InPortNo, Packet}

If the socket is not in an active mode, data can be retrieved via the recv/2,3 calls. Note that arriving UDP packets that are longer than the receive buffer option specifies, might be truncated without warning.

When a socket in {active, N} mode (see inet:setopts/2 for details) transitions to passive ({active, false}) mode, the controlling process is notified by a message of the following form:

    {udp_passive, Socket}

IP and InPortNo define the address from which Packet came. Packet is a list of bytes if the option list was specified. Packet is a binary if the option binary was specified.

Default value for the receive buffer option is {recbuf, 8192}.

If Port == 0, the underlying OS assigns a free UDP port, use inet:port/1 to retrieve it.

send(Socket, Address, Port, Packet) -> ok | {error, Reason}

Types:

Socket = socket()
Address = inet:ip_address() | inet:hostname()
Port = inet:port_number()
Packet = iodata()
Reason = not_owner | inet:posix()

Sends a packet to the specified address and port. The Address argument can be either a hostname, or an IP address.

recv(Socket, Length) ->
{ok, {Address, Port, Packet}} | {error, Reason}
recv(Socket, Length, Timeout) ->
{ok, {Address, Port, Packet}} | {error, Reason}

Types:

Socket = socket()
Length = integer() >= 0
Timeout = timeout()
Address = inet:ip_address()
Port = inet:port_number()
Packet = string() | binary()
Reason = not_owner | inet:posix()

This function receives a packet from a socket in passive mode.

The optional Timeout parameter specifies a timeout in milliseconds. The default value is infinity.

controlling_process(Socket, Pid) -> ok | {error, Reason}

Types:

Socket = socket()
Pid = pid()
Reason = closed | not_owner | inet:posix()

Assigns a new controlling process Pid to Socket. The controlling process is the process which receives messages from the socket. If called by any other process than the current controlling process, {error, not_owner} is returned.

close(Socket) -> ok

Types:

Socket = socket()

Closes a UDP socket.