Class: TCPSocket
- Inherits:
-
IPSocket
- Object
- IO
- BasicSocket
- IPSocket
- TCPSocket
- Defined in:
- mrbgems/mruby-socket/mrblib/socket.rb
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from BasicSocket
Instance Method Summary collapse
-
#initialize(host, service, local_host = nil, local_service = nil) ⇒ TCPSocket
constructor
call-seq: TCPSocket.new(host, service, local_host=nil, local_service=nil) -> tcpsocket.
Methods inherited from IPSocket
#addr, getaddress, #peeraddr, #recvfrom
Methods inherited from BasicSocket
do_not_reverse_lookup, do_not_reverse_lookup=, for_fd, #local_address, #recv_nonblock, #remote_address
Methods inherited from IO
#each, #each_byte, #each_char, #hash, open, pipe, popen, #pos=, #printf, read, #rewind
Constructor Details
#initialize(host, service, local_host = nil, local_service = nil) ⇒ TCPSocket
call-seq:
TCPSocket.new(host, service, local_host=nil, local_service=nil) -> tcpsocket
Creates a new TCP socket connected to the given host and service. Optionally binds to local_host and local_service first.
sock = TCPSocket.new("localhost", 80)
sock = TCPSocket.new("www.example.com", "http")
sock = TCPSocket.new("remote", 80, "127.0.0.1", 12345)
529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 529 def initialize(host, service, local_host=nil, local_service=nil) if @init_with_fd super(host, service) else s = nil e = SocketError Addrinfo.foreach(host, service) {|ai| begin s = Socket._socket(ai.afamily, Socket::SOCK_STREAM, 0) if local_host or local_service local_host ||= (ai.afamily == Socket::AF_INET) ? "0.0.0.0" : "::" local_service ||= "0" bi = Addrinfo.getaddrinfo(local_host, local_service, ai.afamily, ai.socktype)[0] Socket._bind(s, bi.to_sockaddr) end Socket._connect(s, ai.to_sockaddr) super(s, "r+") return rescue => e0 e = e0 end } raise e end end |