Class: Kibuvits_krl171bt4_io
- Inherits:
-
Object
- Object
- Kibuvits_krl171bt4_io
- Includes:
- Singleton
- Defined in:
- lib/kibuvits_ruby_library_krl171bt4_.rb
Overview
write_2_console
Constant Summary collapse
- @@cache =
Hash.new
Class Method Summary collapse
-
.create_empty_ht_stdstreams ⇒ Object
create_empty_ht_stdstreams.
-
.s_localhost_IP_address ⇒ Object
s_localhost_IP_address.
-
.s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected ⇒ Object
s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected.
Instance Method Summary collapse
-
#create_empty_ht_stdstreams ⇒ Object
———————————————————————–.
-
#initialize ⇒ Kibuvits_krl171bt4_io
constructor
A new instance of Kibuvits_krl171bt4_io.
-
#s_localhost_IP_address ⇒ Object
Returns “127.0.0.1” or “::1”, depending on the value of the s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected().
-
#s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected ⇒ Object
A computer might have multiple network cards, like WiFi card, mobile internet USB-stick, etc.
Constructor Details
#initialize ⇒ Kibuvits_krl171bt4_io
6978 6979 |
# File 'lib/kibuvits_ruby_library_krl171bt4_.rb', line 6978 def initialize end |
Class Method Details
.create_empty_ht_stdstreams ⇒ Object
create_empty_ht_stdstreams
6990 6991 6992 6993 |
# File 'lib/kibuvits_ruby_library_krl171bt4_.rb', line 6990 def Kibuvits_krl171bt4_io.create_empty_ht_stdstreams ht_stdstreams=Kibuvits_krl171bt4_io.instance.create_empty_ht_stdstreams return ht_stdstreams end |
.s_localhost_IP_address ⇒ Object
s_localhost_IP_address
7105 7106 7107 7108 |
# File 'lib/kibuvits_ruby_library_krl171bt4_.rb', line 7105 def Kibuvits_krl171bt4_io.s_localhost_IP_address s_out=Kibuvits_krl171bt4_io.instance.s_localhost_IP_address return s_out end |
.s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected ⇒ Object
s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected
7077 7078 7079 7080 |
# File 'lib/kibuvits_ruby_library_krl171bt4_.rb', line 7077 def Kibuvits_krl171bt4_io.s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected s_out=Kibuvits_krl171bt4_io.instance.s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected return s_out end |
Instance Method Details
#create_empty_ht_stdstreams ⇒ Object
6983 6984 6985 6986 6987 6988 |
# File 'lib/kibuvits_ruby_library_krl171bt4_.rb', line 6983 def create_empty_ht_stdstreams ht_stdstreams=Hash.new ht_stdstreams[$kibuvits_krl171bt4_lc_s_stdout]=$kibuvits_krl171bt4_lc_emptystring ht_stdstreams[$kibuvits_krl171bt4_lc_s_stderr]=$kibuvits_krl171bt4_lc_emptystring return ht_stdstreams end |
#s_localhost_IP_address ⇒ Object
Returns “127.0.0.1” or “::1”, depending on the value of the s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected()
7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 |
# File 'lib/kibuvits_ruby_library_krl171bt4_.rb', line 7085 def s_localhost_IP_address if !defined? @s_localhost_IP_address_cache s_ip_address=s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected s_0=nil if (s_ip_address.gsub(/[\d]/,$kibuvits_krl171bt4_lc_emptystring)).length==3 s_0="127.0.0.1" else if s_ip_address==$kibuvits_krl171bt4_lc_s_localhost kibuvits_krl171bt4_throw("s_ip_addresss == \"localhost\", \n"+ "but it should be an IP-address.\n"+ "GUID='555016d5-9a01-4796-a2ce-c13290a118e7'\n\n") end # if s_0="::1" # IPv6 version of the loop-back interface end # if @s_localhost_IP_address_cache=s_0.freeze end # if s_out=@s_localhost_IP_address_cache return s_out end |
#s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected ⇒ Object
A computer might have multiple network cards, like WiFi card, mobile internet USB-stick, etc.
If only loop-back interfaces are found, a random “localhost” loop-back IP-addrss is returned.
Action priorities:
highest_priority) Return a non-loop-back IPv4 address
lower_priority) Return a non-loop-back IPv6 address
lower_priority) Return a loop-back IPv4 address
lower_priority) Return a loop-back IPv6 address
lowest_priority) Throw an exception
The reason, why IPv4 is preferred to IPv6 is that IPv6 addresses are assigned to interfaces on LAN even, when the actual internet connection is available only through an IPv4 address.
On the other hand, just like NAT almost solved the IPv4 address space problem by mapping LANipAddress:whateverport1_to_WANipAddress:someport2 it is possible to increase the number of end-point addresses even further by adding a software layer, like ApplicationName_LANipAddress:whateverport1, where the ApplicationName might depict a multiplexer/demultiplexer. That is to say, the IPv4 addresses are likely to go a pretty long way.
7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 |
# File 'lib/kibuvits_ruby_library_krl171bt4_.rb', line 7025 def s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected if !defined? $kibuvits_krl171bt4_inclusionconstannt_kibuvits_krl171bt4_io_s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected # The interpreter is sometimes picky, if real # Ruby constants are in a function. require "socket" $kibuvits_krl171bt4_inclusionconstannt_kibuvits_krl171bt4_io_s_one_of_the_public_IP_addresses_or_a_loopback_if_unconnected=true end # if ar_doable=Array.new(5,false) # actions by priority #ar_doable[4]=true # throw, if all else fails, outcommented due to a hack ar_data=Array.new(5,nil) # Credits go to to: # http://stackoverflow.com/questions/5029427/ruby-get-local-ip-nix ar_addrinfo=Socket.ip_address_list ar_addrinfo.each do |ob_addrinfo| if ob_addrinfo.ipv6? next if ob_addrinfo.ipv6_multicast? if ob_addrinfo.ipv6_loopback? ar_doable[3]=true ar_data[3]=ob_addrinfo.ip_address next end # if next if ar_doable[1] ar_doable[1]=true ar_data[1]=ob_addrinfo.ip_address else if ob_addrinfo.ipv4? next if ob_addrinfo.ipv4_multicast? if ob_addrinfo.ipv4_loopback? ar_doable[2]=true ar_data[2]=ob_addrinfo.ip_address next end # if next if ar_doable[0] ar_doable[0]=true ar_data[0]=ob_addrinfo.ip_address else kibuvits_krl171bt4_throw("ob_addrinfo.to_s=="+ob_addrinfo.to_s+ "\n GUID='d45ca622-f195-4351-a5fe-c13290a118e7'\n\n") end # if end # if end # loop i_n=ar_doable.size-1 # The last option is throwing. i_n.times do |i_ix| if ar_doable[i_ix] s_out=ar_data[i_ix] return s_out end # if end # loop kibuvits_krl171bt4_throw("ar_addrinfo.to_s=="+ar_addrinfo.to_s+ "\n GUID='55ca1ad1-454f-4653-b1ee-c13290a118e7'\n\n") end |