class TCPSocket
Overview
A Transmission Control Protocol (TCP/IP) socket.
Usage example:
require "socket"
TCPSocket.open("localhost", 1234) do |socket|
socket.puts "hello!"
puts client.gets
end
Defined in:
socket/tcp_socket.crConstant Summary
-
DEFAULT_CONNECT_TIMEOUT =
15.seconds -
DEFAULT_DNS_TIMEOUT =
10.seconds
Constructors
-
.new(host : String, port : Int32, local_address : String, local_port : Int32, *, dns_timeout : Time::Span | Number? = DEFAULT_DNS_TIMEOUT, connect_timeout : Time::Span | Number? = DEFAULT_CONNECT_TIMEOUT) : TCPSocket
Creates a new TCP connection to a remote socket from a specified local socket.
-
.new(host : String, port : Int32, *, dns_timeout : Time::Span | Number? = DEFAULT_DNS_TIMEOUT, connect_timeout : Time::Span | Number? = DEFAULT_CONNECT_TIMEOUT) : TCPSocket
Creates a new TCP connection to a remote socket.
-
.new(raw : Socket::Raw)
Create a
TCPSocketfrom a raw socket. -
.new(address : Socket::IPAddress, local_address : Socket::IPAddress? = nil, *, connect_timeout : Time::Span | Number? = DEFAULT_CONNECT_TIMEOUT) : TCPSocket
Creates a new TCP connection to a remote socket.
Class Method Summary
-
.open(host : String, port : Int32, local_address : String, local_port : Int32, *, dns_timeout : Time::Span | Number? = DEFAULT_DNS_TIMEOUT, connect_timeout : Time::Span | Number? = DEFAULT_CONNECT_TIMEOUT, &block)
Opens a TCP socket to a remote TCP server, yields it to the block.
-
.open(host : String, port : Int32, *, dns_timeout : Time::Span | Number? = DEFAULT_DNS_TIMEOUT, connect_timeout : Time::Span | Number? = DEFAULT_CONNECT_TIMEOUT, &block)
Opens a TCP socket to a remote TCP server, yields it to the block.
-
.open(address : Socket::IPAddress, local_address : Socket::IPAddress? = nil, *, connect_timeout : Time::Span | Number? = DEFAULT_CONNECT_TIMEOUT, &block)
Opens a TCP socket to a remote TCP server, yields it to the block.
Instance Method Summary
-
#close : Nil
Closes this socket.
-
#close_read : Nil
Closes this socket for reading.
-
#close_write : Nil
Closes this socket for writing.
-
#closed? : Bool
Returns
trueif this socket is closed. - #flush
- #keepalive=(value : Bool) : Bool
- #keepalive? : Bool
-
#local_address : Socket::IPAddress
Returns the
IPAddressfor the local end of the IP socket. -
#local_address? : Socket::IPAddress?
Returns the
IPAddressfor the local end of the IP socket, ornilif the socket is closed. - #peek
-
#raw : Socket::Raw
Returns the raw socket wrapped by this TCP socket.
- #read(slice : Bytes) : Int32
- #read_buffering=(read_buffering)
- #read_buffering?
-
#read_timeout : Time::Span?
Returns the read timeout for this socket.
-
#read_timeout=(timeout : Time::Span | Number?)
Sets the read timeout for this socket.
-
#remote_address : Socket::IPAddress
Returns the
IPAddressfor the remote end of the IP socket. -
#remote_address? : Socket::IPAddress?
Returns the
IPAddressfor the remote end of the IP socket, ornilif the socket is closed. - #sync=(value : Bool) : Bool
- #sync? : Bool
-
#tcp_keepalive_count : Int32
Returns the number of probes sent, without response before dropping the connection.
-
#tcp_keepalive_count=(value : Int32) : Int32
Sets the number of probes sent, without response before dropping the connection.
-
#tcp_keepalive_idle : Int32
Returns the amount of time (in seconds) the connection must be idle before sending keepalive probes.
-
#tcp_keepalive_idle=(value : Int32) : Int32
Sets the amount of time (in seconds) the connection must be idle before sending keepalive probes.
-
#tcp_keepalive_interval : Int32
Returns the amount of time (in seconds) between keepalive probes.
-
#tcp_keepalive_interval=(value : Int32) : Int32
Sets the amount of time (in seconds) between keepalive probes.
-
#tcp_nodelay=(value : Bool) : Bool
Disable the Nagle algorithm when set to
true, otherwise enables it. -
#tcp_nodelay? : Bool
Returns
trueif the Nable algorithm is disabled. - #write(slice : Bytes) : Nil
-
#write_timeout : Time::Span?
Returns the write timeout for this socket.
-
#write_timeout=(timeout : Time::Span | Number?)
Sets the write timeout for this socket.
Instance methods inherited from class IO
<<(obj) : self
<<,
close
close,
closed?
closed?,
each_byte(&block) : Nileach_byte each_byte, each_char(&block) : Nil
each_char each_char, each_line(*args, **options, &block) : Nil
each_line(*args, **options) each_line, encoding : String encoding, flush flush, gets(delimiter : Char, limit : Int, chomp = false) : String?
gets(delimiter : Char, chomp = false) : String?
gets(chomp = true) : String?
gets(limit : Int, chomp = false) : String?
gets(delimiter : String, chomp = false) : String? gets, gets_to_end : String gets_to_end, peek : Bytes? peek, pos pos, pos=(value) pos=, print(*objects : _) : Nil
print(obj) : Nil print, printf(format_string, *args) : Nil
printf(format_string, args : Array | Tuple) : Nil printf, puts(*objects : _) : Nil
puts : Nil
puts(obj) : Nil
puts(string : String) : Nil puts, read(slice : Bytes) read, read_at(offset, bytesize, &block) read_at, read_byte : UInt8? read_byte, read_bytes(type, format : IO::ByteFormat = IO::ByteFormat::SystemEndian) read_bytes, read_char : Char? read_char, read_fully(slice : Bytes) read_fully, read_fully?(slice : Bytes) read_fully?, read_line(*args, **options) : String read_line, read_string(bytesize : Int) : String read_string, read_utf8(slice : Bytes) read_utf8, read_utf8_byte read_utf8_byte, rewind rewind, seek(offset, whence : Seek = Seek::Set) seek, set_encoding(encoding : String, invalid : Symbol? = nil) set_encoding, skip(bytes_count : Int) : Nil skip, skip_to_end : Nil skip_to_end, tell tell, tty? : Bool tty?, write(slice : Bytes) : Nil write, write_byte(byte : UInt8) write_byte, write_bytes(object, format : IO::ByteFormat = IO::ByteFormat::SystemEndian) write_bytes, write_utf8(slice : Bytes) write_utf8
Class methods inherited from class IO
copy(src, dst, limit : Int)copy(src, dst) copy, pipe(read_blocking = false, write_blocking = false) : Tuple(IO::FileDescriptor, IO::FileDescriptor)
pipe(read_blocking = false, write_blocking = false, &block) pipe
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference)
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new
Instance methods inherited from class Object
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, class class, dup dup, hash(hasher)
hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try, unsafe_as(type : T.class) forall T unsafe_as
Constructor methods inherited from class Object
from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io : String | IO) : self from_yaml
Constructor Detail
Creates a new TCP connection to a remote socket from a specified local socket.
dns_timeout limits the time for DNS request (if host is a hostname and needs
to be resolved). connect_timeout limits the time to connect to the remote
socket. Both values can be a Time::Span or a number representing seconds.
NOTE dns_timeout is currently ignored.
local_address and local_port specify the local socket used to connect to the remote socket.
Creates a new TCP connection to a remote socket.
dns_timeout limits the time for DNS request (if host is a hostname and needs
to be resolved). connect_timeout limits the time to connect to the remote
socket. Both values can be a Time::Span or a number representing seconds.
NOTE dns_timeout is currently ignored.
Creates a new TCP connection to a remote socket.
connect_timeout limits the time to connect to the remote
socket. Both values can be a Time::Span or a number representing seconds.
local_address specifies the local socket used to connect to the remote socket.
NOTE dns_timeout is currently ignored.
Class Method Detail
Opens a TCP socket to a remote TCP server, yields it to the block. Eventually closes the socket when the block returns.
See .new for details about the arguments.
Returns the value of the block.
Opens a TCP socket to a remote TCP server, yields it to the block. Eventually closes the socket when the block returns.
See .new for details about the arguments.
Returns the value of the block.
Opens a TCP socket to a remote TCP server, yields it to the block. Eventually closes the socket when the block returns.
See .new for details about the arguments.
Returns the value of the block.
Instance Method Detail
Returns the IPAddress for the local end of the IP socket.
Raises Socket::Error if the socket is closed.
Returns the IPAddress for the local end of the IP socket, or nil if the
socket is closed.
Sets the read timeout for this socket.
Returns the IPAddress for the remote end of the IP socket.
Raises Socket::Error if the socket is closed.
Returns the IPAddress for the remote end of the IP socket, or nil if the
socket is closed.
Returns the number of probes sent, without response before dropping the connection.
Sets the number of probes sent, without response before dropping the connection.
Returns the amount of time (in seconds) the connection must be idle before sending keepalive probes.
Sets the amount of time (in seconds) the connection must be idle before sending keepalive probes.
Returns the amount of time (in seconds) between keepalive probes.
Sets the amount of time (in seconds) between keepalive probes.
Disable the Nagle algorithm when set to true, otherwise enables it.
Sets the write timeout for this socket.