D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
alt
/
ruby18
/
share
/
ri
/
1.8
/
system
/
BasicSocket
/
Filename :
setsockopt-i.yaml
back
Copy
--- !ruby/object:RI::MethodDescription aliases: [] block_params: comment: - !ruby/struct:SM::Flow::P body: Sets a socket option. These are protocol and system specific, see your local sytem documentation for details. - !ruby/struct:SM::Flow::H level: 3 text: Parameters - !ruby/object:SM::Flow::LIST contents: - !ruby/struct:SM::Flow::LI label: "*" body: <tt>level</tt> is an integer, usually one of the SOL_ constants such as Socket::SOL_SOCKET, or a protocol level. - !ruby/struct:SM::Flow::LI label: "*" body: <tt>optname</tt> is an integer, usually one of the SO_ constants, such as Socket::SO_REUSEADDR. - !ruby/struct:SM::Flow::LI label: "*" body: "<tt>optval</tt> is the value of the option, it is passed to the underlying setsockopt() as a pointer to a certain number of bytes. How this is done depends on the type:" - !ruby/object:SM::Flow::LIST contents: - !ruby/struct:SM::Flow::LI label: "-" body: "Fixnum: value is assigned to an int, and a pointer to the int is passed, with length of sizeof(int)." - !ruby/struct:SM::Flow::LI label: "-" body: "true or false: 1 or 0 (respectively) is assigned to an int, and the int is passed as for a Fixnum. Note that <tt>false</tt> must be passed, not <tt>nil</tt>." - !ruby/struct:SM::Flow::LI label: "-" body: "String: the string's data and length is passed to the socket." type: :BULLET type: :BULLET - !ruby/struct:SM::Flow::H level: 3 text: Examples - !ruby/struct:SM::Flow::P body: "Some socket options are integers with boolean values, in this case #setsockopt could be called like this:" - !ruby/struct:SM::Flow::VERB body: " sock.setsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR, true)\n" - !ruby/struct:SM::Flow::P body: "Some socket options are integers with numeric values, in this case #setsockopt could be called like this:" - !ruby/struct:SM::Flow::VERB body: " sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_TTL, 255)\n" - !ruby/struct:SM::Flow::P body: "Option values may be structs. Passing them can be complex as it involves examining your system headers to determine the correct definition. An example is an <tt>ip_mreq</tt>, which may be defined in your system headers as:" - !ruby/struct:SM::Flow::VERB body: " struct ip_mreq {\n struct in_addr imr_multiaddr;\n struct in_addr imr_interface;\n };\n" - !ruby/struct:SM::Flow::P body: "In this case #setsockopt could be called like this:" - !ruby/struct:SM::Flow::VERB body: " optval = IPAddr.new("224.0.0.251") + Socket::INADDR_ANY\n sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, optval)\n" full_name: BasicSocket#setsockopt is_singleton: false name: setsockopt params: " setsockopt(level, optname, optval)\n" visibility: public