--- !ruby/object:RI::MethodDescription
aliases: []
block_params:
comment:
- !ruby/struct:SM::Flow::P
body: Accepts an incoming connection returnings an array containg the (integer) file descriptor for the incoming connection, client_socket_fd, and a string that contains the struct sockaddr information about the caller, client_sockaddr.
- !ruby/struct:SM::Flow::H
level: 3
text: Example
- !ruby/struct:SM::Flow::VERB
body: " # In one script, start this first\n 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 socket.listen( 5 )\n client_fd, client_sockaddr = socket.sysaccept\n client_socket = Socket.for_fd( client_fd )\n puts "The client said, '#{client_socket.readline.chomp}'"\n client_socket.puts "Hello from script one!"\n socket.close\n\n # In another script, start this second\n 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.connect( sockaddr )\n socket.puts "Hello from script 2."\n puts "The server said, '#{socket.readline.chomp}'"\n socket.close\n"
- !ruby/struct:SM::Flow::P
body: Refer to Socket#accept for the exceptions that may be thrown if the call to sysaccept fails.
- !ruby/struct:SM::Flow::H
level: 3
text: See
- !ruby/object:SM::Flow::LIST
contents:
- !ruby/struct:SM::Flow::LI
label: "*"
body: Socket#accept
type: :BULLET
full_name: Socket#sysaccept
is_singleton: false
name: sysaccept
params: |
socket.sysaccept => [client_socket_fd, client_sockaddr]
visibility: public