:STREAM, ...) {|ai| # ... begin sock = ai.connect(...) rescue SystemCallError last_error = $! next end ret = sock break } # ... end FYUTPDLFUMJCTPDLFUSC
self.socktype, self.protocol) begin # ... sock.connect(self) rescue Exception sock.close raise end # ... sock end # ... end FYUTPDLFUMJCTPDLFUSC 4PDLFUOFX
:STREAM, ...) {|ai| # ... begin sock = ai.connect(...) rescue SystemCallError last_error = $! next end ret = sock break } # ... ret end FYUTPDLFUMJCTPDLFUSC ࠶ͼ "EESJOGPDPOOFDU 4PDLFUΦϒδΣΫτΛ࡞ˠଓ ෦Ͱ"EESJOGPDPOOFDU@JOUFSOBMΛݺͿ
if fast_fallback && !(host && ip_address?(host)) tcp_with_fast_fallback(host, port, ...) else tcp_without_fast_fallback(host, port, ...) end if block_given? begin yield sock ensure sock.close end else sock end end FYUTPDLFUMJCTPDLFUSC ࠶ͼ 4PDLFUUDQ@XJUIPVU@GBTU@GBMMCBDL ଓࡁΈͷ4PDLFUΦϒδΣΫτΛऔಘ
if fast_fallback && !(host && ip_address?(host)) tcp_with_fast_fallback(host, port, ...) else tcp_without_fast_fallback(host, port, ...) end if block_given? begin yield sock ensure sock.close end else sock end end FYUTPDLFUMJCTPDLFUSC ฦΓͷ4PDLFUΦϒδΣΫτΛมTPDLʹ֨ೲ 4PDLFUUDQ@XJUIPVU@GBTU@GBMMCBDLͷฦΓͰ͋Δ ଓࡁΈ4PDLFUΦϒδΣΫτΛมTPDLʹอଘ 4PDLFUUDQ@XJUIPVU@GBTU@GBMMCBDL ଓࡁΈͷ4PDLFUΦϒδΣΫτΛऔಘ
if fast_fallback && !(host && ip_address?(host)) tcp_with_fast_fallback(host, port, ...) else tcp_without_fast_fallback(host, port, ...) end if block_given? begin yield sock ensure sock.close end else sock end end ଓࡁΈͷ4PDLFUΦϒδΣΫτΛͬͯ 4PDLFUUDQͷϒϩοΫΛ࣮ߦ͢Δ FYUTPDLFUMJCTPDLFUSC Socket.tcp(...) do |sock| sock.write "Hi" message = sock.read puts message end
if fast_fallback && !(host && ip_address?(host)) tcp_with_fast_fallback(host, port, ...) else tcp_without_fast_fallback(host, port, ...) end if block_given? begin yield sock ensure sock.close end else sock end end ଓࡁΈͷ4PDLFUΦϒδΣΫτΛͬͯ 4PDLFUUDQͷϒϩοΫΛ࣮ߦ͢Δ Socket.tcp(...) do |sock| sock.write "Hi" message = sock.read puts message end aΰʔϧ FYUTPDLFUMJCTPDLFUSC
Addrinfo.foreach(host, port, nil, :STREAM, nil, Socket::AI_PASSIVE) {|ai| begin s = ai.listen rescue SystemCallError last_error = $! next end sockets << s # ... } # ... end FYUTPDLFUMJCTPDLFUSC ˞if port == 0ͷelseઅͷத
Addrinfo.foreach(host, port, nil, :STREAM, nil, Socket::AI_PASSIVE) {|ai| begin s = ai.listen rescue SystemCallError last_error = $! next end sockets << s # ... } # ... end "EESJOGPGPSFBDI FYUTPDLFUMJCTPDLFUSC ˞if port == 0ͷelseઅͷத αʔόࣗͷϗετ໊ͷ໊લղܾΛߦ͏
Addrinfo.foreach(host, port, nil, :STREAM, nil, Socket::AI_PASSIVE) {|ai| begin s = ai.listen rescue SystemCallError last_error = $! next end sockets << s # ... } # ... end "EESJOGPMJTUFO FYUTPDLFUMJCTPDLFUSC ˞if port == 0ͷelseઅͷத "EESJOGPΦϒδΣΫτ
begin # ... sock.bind(self) sock.listen(backlog) rescue Exception sock.close raise end # ... sock end end FYUTPDLFUMJCTPDLFUSC 4PDLFUOFX ৽͍͠4PDLFUΦϒδΣΫτΛ࡞͢Δ
begin sock.ipv6only! if self.ipv6? # ... sock.bind(self) sock.listen(backlog) rescue Exception sock.close raise end # ... sock end end FYUTPDLFUMJCTPDLFUSC 4PDLFUCJOE ࢦఆͷιέοτͱࣗͷΞυϨεΛඥ͚ͮΔ ࠶ͼ
begin sock.ipv6only! if self.ipv6? # ... sock.bind(self) sock.listen(backlog) rescue Exception sock.close raise end # ... sock end end FYUTPDLFUMJCTPDLFUSC 4PDLFUMJTUFO
begin sock.ipv6only! if self.ipv6? # ... sock.bind(self) sock.listen(backlog) rescue Exception sock.close raise end # ... sock end end FYUTPDLFUMJCTPDLFUSC ࠶ͼ 4PDLFUMJTUFO ࢦఆͷιέοτͰଓΛػ͢Δ
begin sock.ipv6only! if self.ipv6? # ... sock.bind(self) sock.listen(backlog) rescue Exception sock.close raise end # ... sock end end FYUTPDLFUMJCTPDLFUSC ଓػதͷ4PDLFUΦϒδΣΫτ 4PDLFUΦϒδΣΫτΛฦͯ͠"EESJOGPMJTUFOΛऴྃ
= tcp_server_sockets_port0(host) else end if block_given? begin yield sockets ensure sockets.each(&:close) end else sockets end end ઌ΄Ͳ·Ͱͷॲཧ 4PDLFUUDQ@TFSWFS@TPDLFUTϝιουͷଓ͖ "EESJOGPGPSFBDI͕ऴྃͯ͠ɺ if port == 0ͷelseઅΛൈ͚ͨޙ Ҿ͖ଓ͖ ྻTPDLFUTʹଓػதͷ4PDLFUΦϒδΣΫτ͕อଘ͞Ε͍ͯΔ FYUTPDLFUMJCTPDLFUSC
= tcp_server_sockets_port0(host) else end if block_given? begin yield sockets ensure sockets.each(&:close) end else sockets end end ͜ͷϝιουͷݺͼग़࣌͠ʹ͞Ε͍ͯͨ ϒϩοΫΛ࣮ߦ͢Δ def self.tcp_server_loop(host=nil, port, &b) tcp_server_sockets(host, port) {|sockets| accept_loop(sockets, &b) } end ઌ΄Ͳ·Ͱͷॲཧ FYUTPDLFUMJCTPDLFUSC ϒϩοΫ
= tcp_server_sockets_port0(host) else end if block_given? begin yield sockets ensure sockets.each(&:close) end else sockets end end def self.tcp_server_loop(host=nil, port, &b) tcp_server_sockets(host, port) {|sockets| accept_loop(sockets, &b) } end 4PDLFUBDDFQU@MPPQ ઌ΄Ͳ·Ͱͷॲཧ FYUTPDLFUMJCTPDLFUSC
= tcp_server_sockets_port0(host) else end if block_given? begin yield sockets ensure sockets.each(&:close) end else sockets end end def self.tcp_server_loop(host=nil, port, &b) tcp_server_sockets(host, port) {|sockets| accept_loop(sockets, &b) } end ଓػதͷ4PDLFUΦϒδΣΫτͷྻ ઌ΄Ͳ·Ͱͷॲཧ FYUTPDLFUMJCTPDLFUSC