socket.connect_nonblock(remote_sockaddr) => 0
Instance Public methods
Requests a connection to be made on the given remote_sockaddr
after O_NONBLOCK is set for the underlying file descriptor. Returns 0 if
successful, otherwise an exception is raised.
Parameter
-
remote_sockaddr
- thestruct
sockaddr contained in a string or Addrinfo object
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Pull down Google's web page require 'socket' include Socket::Constants socket = Socket. new ( AF_INET , SOCK_STREAM , 0 ) sockaddr = Socket.sockaddr_in( 80 , 'www.google.com' ) begin # emulate blocking connect socket.connect_nonblock(sockaddr) rescue IO ::WaitWritable IO .select( nil , [socket]) # wait 3-way handshake completion begin socket.connect_nonblock(sockaddr) # check connection failure rescue Errno:: EISCONN end end socket.write( "GET / HTTP/1.0\r\n\r\n" ) results = socket.read |
Refer to #connect for the exceptions that may be thrown if the call to connect_nonblock fails.
#connect_nonblock may raise any error corresponding to connect(2) failure, including Errno::EINPROGRESS.
If the exception is Errno::EINPROGRESS, it is extended by IO::WaitWritable. So IO::WaitWritable can be used to rescue the exceptions for retrying connect_nonblock.
Please login to continue.