Class: TCPSocket
- Inherits:
-
IPSocket
- Object
- IO
- BasicSocket
- IPSocket
- TCPSocket
- Defined in:
- tcpsocket.c,
tcpsocket.c
Overview
TCPSocket represents a TCP/IP client socket.
A simple client may look like:
require 'socket'
s = TCPSocket.new 'localhost', 2000
while line = s.gets # Read lines from socket
puts line # and print them
end
s.close # close socket when done
Direct Known Subclasses
Class Method Summary collapse
-
.gethostbyname(hostname) ⇒ Array
Use Addrinfo.getaddrinfo instead.
Instance Method Summary collapse
-
#new(remote_host, remote_port, local_host = nil, local_port = nil, connect_timeout: nil) ⇒ Object
constructor
Opens a TCP connection to
remote_host
onremote_port
.
Methods inherited from IPSocket
#addr, getaddress, #inspect, #peeraddr, #recvfrom
Methods inherited from BasicSocket
#close_read, #close_write, #connect_address, do_not_reverse_lookup, #do_not_reverse_lookup, do_not_reverse_lookup=, #do_not_reverse_lookup=, for_fd, #getpeereid, #getpeername, #getsockname, #getsockopt, #local_address, #read_nonblock, #recv, #recv_nonblock, #recvmsg, #recvmsg_nonblock, #remote_address, #send, #sendmsg, #sendmsg_nonblock, #setsockopt, #shutdown, #write_nonblock
Constructor Details
#new(remote_host, remote_port, local_host = nil, local_port = nil, connect_timeout: nil) ⇒ Object
Opens a TCP connection to remote_host
on remote_port
. If local_host
and local_port
are specified, then those parameters are used on the local end to establish the connection.
- :connect_timeout
-
specify the timeout in seconds.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'tcpsocket.c', line 23
static VALUE
tcp_init(int argc, VALUE *argv, VALUE sock)
{
VALUE remote_host, remote_serv;
VALUE local_host, local_serv;
VALUE opt;
static ID keyword_ids[2];
VALUE kwargs[2];
VALUE resolv_timeout = Qnil;
VALUE connect_timeout = Qnil;
if (!keyword_ids[0]) {
CONST_ID(keyword_ids[0], "resolv_timeout");
CONST_ID(keyword_ids[1], "connect_timeout");
}
rb_scan_args(argc, argv, "22:", &remote_host, &remote_serv,
&local_host, &local_serv, &opt);
if (!NIL_P(opt)) {
rb_get_kwargs(opt, keyword_ids, 0, 2, kwargs);
if (kwargs[0] != Qundef) { resolv_timeout = kwargs[0]; }
if (kwargs[1] != Qundef) { connect_timeout = kwargs[1]; }
}
return rsock_init_inetsock(sock, remote_host, remote_serv,
local_host, local_serv, INET_CLIENT,
resolv_timeout, connect_timeout);
}
|
Class Method Details
.gethostbyname(hostname) ⇒ Array
Use Addrinfo.getaddrinfo instead. This method is deprecated for the following reasons:
-
The 3rd element of the result is the address family of the first address. The address families of the rest of the addresses are not returned.
-
gethostbyname() may take a long time and it may block other threads. (GVL cannot be released since gethostbyname() is not thread safe.)
-
This method uses gethostbyname() function already removed from POSIX.
This method lookups host information by hostname.
TCPSocket.gethostbyname("localhost")
#=> ["localhost", ["hal"], 2, "127.0.0.1"]
78 79 80 81 82 83 84 85 |
# File 'tcpsocket.c', line 78
static VALUE
tcp_s_gethostbyname(VALUE obj, VALUE host)
{
rb_warn("TCPSocket.gethostbyname is deprecated; use Addrinfo.getaddrinfo instead.");
struct rb_addrinfo *res =
rsock_addrinfo(host, Qnil, AF_UNSPEC, SOCK_STREAM, AI_CANONNAME);
return rsock_make_hostent(host, res, tcp_sockaddr);
}
|