--- Socket Object. -- Supports IPv4, IPv6 and UNIX (POSIX only) families. -- @cstyle instance module "nixio.Socket" --- Get the local address of a socket. -- @class function -- @name Socket.getsockname -- @return IP-Address -- @return Port --- Get the peer address of a socket. -- @class function -- @name Socket.getpeername -- @return IP-Address -- @return Port --- Bind the socket to a network address. -- @class function -- @name Socket.bind -- @usage This function calls getaddrinfo() and bind() but NOT listen(). -- @usage If host is a domain name it will be looked up and bind() -- tries the IP-Addresses in the order returned by the DNS resolver -- until the bind succeeds. -- @usage UNIX sockets ignore the port, -- and interpret host as a socket path. -- @param host Host (optional, default: all addresses) -- @param port Port or service description -- @return true --- Connect the socket to a network address. -- @class function -- @name Socket.connect -- @usage This function calls getaddrinfo() and connect(). -- @usage If host is a domain name it will be looked up and connect() -- tries the IP-Addresses in the order returned by the DNS resolver -- until the connect succeeds. -- @usage UNIX sockets ignore the port, -- and interpret host as a socket path. -- @param host Hostname or IP-Address (optional, default: localhost) -- @param port Port or service description -- @return true --- Listen for connections on the socket. -- @class function -- @name Socket.listen -- @param backlog Length of queue for pending connections -- @return true --- Accept a connection on the socket. -- @class function -- @name Socket.accept -- @return Socket Object -- @return Peer IP-Address -- @return Peer Port --- Send a message on the socket specifying the destination. -- @class function -- @name Socket.sendto -- @usage Warning: It is not guaranteed that all data -- in the buffer is written at once. -- You have to check the return value - the number of bytes actually written - -- or use the safe IO functions in the high-level IO utility module. -- @usage Unlike standard Lua indexing the lowest offset and default is 0. -- @param buffer Buffer holding the data to be written. -- @param host Target IP-Address -- @param port Target Port -- @param offset Offset to start reading the buffer from. (optional) -- @param length Length of chunk to read from the buffer. (optional) -- @return number of bytes written --- Send a message on the socket. -- This function is identical to sendto except for the missing destination -- paramters. See the sendto description for a detailed description. -- @class function -- @name Socket.send -- @param buffer Buffer holding the data to be written. -- @param offset Offset to start reading the buffer from. (optional) -- @param length Length of chunk to read from the buffer. (optional) -- @see Socket.sendto -- @return number of bytes written --- Send a message on the socket (This is an alias for send). -- See the sendto description for a detailed description. -- @class function -- @name Socket.write -- @param buffer Buffer holding the data to be written. -- @param offset Offset to start reading the buffer from. (optional) -- @param length Length of chunk to read from the buffer. (optional) -- @see Socket.sendto -- @return number of bytes written --- Receive a message on the socket including the senders source address. -- @class function -- @name Socket.recvfrom -- @usage Warning: It is not guaranteed that all requested data -- is read at once. -- You have to check the return value - the length of the buffer actually read - -- or use the safe IO functions in the high-level IO utility module. -- @usage The length of the return buffer is limited by the (compile time) -- nixio buffersize which is nixio.const.buffersize (8192 by default). -- Any read request greater than that will be safely truncated to this value. -- @param length Amount of data to read (in Bytes). -- @return buffer containing data successfully read -- @return host IP-Address of the sender -- @return port Port of the sender --- Receive a message on the socket. -- This function is identical to recvfrom except that it does not return -- the sender's source address. See the recvfrom description for more details. -- @class function -- @name Socket.recv -- @param length Amount of data to read (in Bytes). -- @see Socket.recvfrom -- @return buffer containing data successfully read --- Receive a message on the socket (This is an alias for recv). -- See the recvfrom description for more details. -- @class function -- @name Socket.read -- @param length Amount of data to read (in Bytes). -- @see Socket.recvfrom -- @return buffer containing data successfully read --- Close the socket. -- @class function -- @name Socket.close -- @return true --- Shut down part of a full-duplex connection. -- @class function -- @name Socket.shutdown -- @param how (optional, default: rdwr) ["rdwr", "rd", "wr"] -- @return true --- Get the number of the filedescriptor. -- @class function -- @name Socket.fileno -- @return file descriptor number --- Set the blocking mode of the socket. -- @class function -- @name Socket.setblocking -- @param blocking (boolean) -- @return true --- Set a socket option. -- @class function -- @name Socket.setopt -- @param level Level ["socket", "tcp", "ip", "ipv6"] -- @param option Option ["keepalive", "reuseaddr", "sndbuf", "rcvbuf", -- "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute", -- "bindtodevice", "error", "oobinline", "cork" (TCP), "nodelay" (TCP), -- "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop" -- (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops" -- (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)] -- @param value Value -- @return true --- Get a socket option. -- @class function -- @name Socket.getopt -- @param level Level ["socket", "tcp", "ip", "ipv6"] -- @param option Option ["keepalive", "reuseaddr", "sndbuf", "rcvbuf", -- "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute", -- "bindtodevice", "error", "oobinline", "cork" (TCP), "nodelay" (TCP), -- "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop" -- (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops" -- (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)] -- @return Value