--- !ruby/object:RI::MethodDescription aliases: [] block_params: comment: - !ruby/struct:SM::Flow::P body: Binds to the given struct sockaddr. - !ruby/struct:SM::Flow::H level: 3 text: Parameter - !ruby/object:SM::Flow::LIST contents: - !ruby/struct:SM::Flow::LI label: "*" body: server_sockaddr - the struct sockaddr contained in a string type: :BULLET - !ruby/struct:SM::Flow::H level: 3 text: Example - !ruby/struct:SM::Flow::VERB body: " require 'socket'\n include Socket::Constants\n socket = Socket.new( AF_INET, SOCK_STREAM, 0 )\n sockaddr = Socket.pack_sockaddr_in( 2200, 'localhost' )\n socket.bind( sockaddr )\n" - !ruby/struct:SM::Flow::H level: 3 text: Unix-based Exceptions - !ruby/struct:SM::Flow::P body: "On unix-based based systems the following system exceptions may be raised if the call to bind fails:" - !ruby/object:SM::Flow::LIST contents: - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EACCES - the specified sockaddr is protected and the current user does not have permission to bind to it - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EADDRINUSE - the specified sockaddr is already in use - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EADDRNOTAVAIL - the specified sockaddr is not available from the local machine - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EAFNOSUPPORT - the specified sockaddr isnot a valid address for the family of the calling socket - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EBADF - the sockaddr specified is not a valid file descriptor - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EFAULT - the sockaddr argument cannot be accessed - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EINVAL - the socket is already bound to an address, and the protocol does not support binding to the new sockaddr or the socket has been shut down. - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EINVAL - the address length is not a valid length for the address family - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENAMETOOLONG - the pathname resolved had a length which exceeded PATH_MAX - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENOBUFS - no buffer space is available - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENOSR - there were insufficient STREAMS resources available to complete the operation - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENOTSOCK - the socket does not refer to a socket - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EOPNOTSUPP - the socket type of the socket does not support binding to an address type: :BULLET - !ruby/struct:SM::Flow::P body: "On unix-based based systems if the address family of the calling socket is Socket::AF_UNIX the follow exceptions may be raised if the call to bind fails:" - !ruby/object:SM::Flow::LIST contents: - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EACCES - search permission is denied for a component of the prefix path or write access to the socket is denided - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EDESTADDRREQ - the sockaddr argument is a null pointer - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EISDIR - same as Errno::EDESTADDRREQ - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EIO - an i/o error occurred - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ELOOP - too many symbolic links were encountered in translating the pathname in sockaddr - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENAMETOOLLONG - a component of a pathname exceeded NAME_MAX characters, or an entired pathname exceeded PATH_MAX characters - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENOENT - a component of the pathname does not name an existing file or the pathname is an empty string - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENOTDIR - a component of the path prefix of the pathname in sockaddr is not a directory - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EROFS - the name would reside on a read only filesystem type: :BULLET - !ruby/struct:SM::Flow::H level: 3 text: Windows Exceptions - !ruby/struct:SM::Flow::P body: "On Windows systems the following system exceptions may be raised if the call to bind fails:" - !ruby/object:SM::Flow::LIST contents: - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENETDOWN-- the network is down - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EACCES - the attempt to connect the datagram socket to the broadcast address failed - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EADDRINUSE - the socket's local address is already in use - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EADDRNOTAVAIL - the specified address is not a valid address for this computer - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EFAULT - the socket's internal address or address length parameter is too small or is not a valid part of the user space addressed - !ruby/struct:SM::Flow::LI label: "*" body: Errno::EINVAL - the socket is already bound to an address - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENOBUFS - no buffer space is available - !ruby/struct:SM::Flow::LI label: "*" body: Errno::ENOTSOCK - the socket argument does not refer to a socket type: :BULLET - !ruby/struct:SM::Flow::H level: 3 text: See - !ruby/object:SM::Flow::LIST contents: - !ruby/struct:SM::Flow::LI label: "*" body: bind manual pages on unix-based systems - !ruby/struct:SM::Flow::LI label: "*" body: bind function in Microsoft's Winsock functions reference type: :BULLET full_name: Socket#bind is_singleton: false name: bind params: | socket.bind(server_sockaddr) => 0 visibility: public