Class: TCPSocket
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Subclasses: | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: | |
| Instance Chain: | |
| Inherits: | IPSocket 
 | 
| Defined in: | ext/socket/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 doneClass Attribute Summary
::BasicSocket - Inherited
| .do_not_reverse_lookup | Gets the global do_not_reverse_lookup flag. | 
| .do_not_reverse_lookup= | Sets the global do_not_reverse_lookup flag. | 
Class Method Summary
- 
    
      .gethostbyname(hostname)  ⇒ Array, ... 
    
    Use Addrinfo.getaddrinfo instead. 
- 
    
      .new(remote_host, remote_port, local_host = nil, local_port = nil, connect_timeout: nil)  
    
    constructor
    Opens a TCP connection to remote_hostonremote_port.
::IPSocket - Inherited
| .getaddress | Lookups the IP address of host. | 
::BasicSocket - Inherited
| .for_fd | Returns a socket object which contains the file descriptor, fd. | 
Instance Attribute Summary
::BasicSocket - Inherited
| #do_not_reverse_lookup | Gets the do_not_reverse_lookup flag of basicsocket. | 
| #do_not_reverse_lookup= | Sets the do_not_reverse_lookup flag of basicsocket. | 
Instance Method Summary
::IPSocket - Inherited
| #addr | Returns the local address as an array which contains address_family, port, hostname and numeric_address. | 
| #inspect | Return a string describing this  | 
| #peeraddr | Returns the remote address as an array which contains address_family, port, hostname and numeric_address. | 
| #recvfrom | Receives a message and return the message as a string and an address which the message come from. | 
::BasicSocket - Inherited
| #close_read | Disallows further read using shutdown system call. | 
| #close_write | Disallows further write using shutdown system call. | 
| #connect_address | Returns an address of the socket suitable for connect in the local machine. | 
| #getpeereid | Returns the user and group on the peer of the UNIX socket. | 
| #getpeername | Returns the remote address of the socket as a sockaddr string. | 
| #getsockname | Returns the local address of the socket as a sockaddr string. | 
| #getsockopt | Gets a socket option. | 
| #local_address | Returns an  | 
| #recv | Receives a message. | 
| #recv_nonblock | Receives up to maxlen bytes from  | 
| #recvmsg | recvmsg receives a message using recvmsg(2) system call in blocking manner. | 
| #recvmsg_nonblock | recvmsg receives a message using recvmsg(2) system call in non-blocking manner. | 
| #remote_address | Returns an  | 
| #send | send mesg via basicsocket. | 
| #sendmsg | sendmsg sends a message using sendmsg(2) system call in blocking manner. | 
| #sendmsg_nonblock | sendmsg_nonblock sends a message using sendmsg(2) system call in non-blocking manner. | 
| #setsockopt | Sets a socket option. | 
| #shutdown | Calls shutdown(2) system call. | 
| #__recvmsg, #__recvmsg_nonblock, #__sendmsg, #__sendmsg_nonblock, #read_nonblock, #write_nonblock, #__read_nonblock, #__recv_nonblock, #__write_nonblock | |
Constructor Details
.new(remote_host, remote_port, local_host = nil, local_port = nil, connect_timeout: nil)
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. 
# File 'ext/socket/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"]# File 'ext/socket/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);
}