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) ⇒ 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) ⇒ 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.
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'tcpsocket.c', line 21
static VALUE
tcp_init(int argc, VALUE *argv, VALUE sock)
{
VALUE remote_host, remote_serv;
VALUE local_host, local_serv;
rb_scan_args(argc, argv, "22", &remote_host, &remote_serv,
&local_host, &local_serv);
return rsock_init_inetsock(sock, remote_host, remote_serv,
local_host, local_serv, INET_CLIENT);
}
|
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"]
59 60 61 62 63 64 65 |
# File 'tcpsocket.c', line 59
static VALUE
tcp_s_gethostbyname(VALUE obj, VALUE host)
{
struct rb_addrinfo *res =
rsock_addrinfo(host, Qnil, AF_UNSPEC, SOCK_STREAM, AI_CANONNAME);
return rsock_make_hostent(host, res, tcp_sockaddr);
}
|