i want to get the IP Address of the client in a TCPServer in Ruby. And (if it is possible) the MAC Address.
For example, a Time Server in Ruby, see the comment.
tcpserver = TCPServer.new("", 80)
if tcpserver
puts "Listening"
loop do
socket = tcpserver.accept
if socket
Thread.new do
puts "Connected from" + # HERE! How can i get the IP Address from the client?
socket.write(Time.now.to_s)
socket.close
end
end
end
end
Thank you very much!
Ruby 1.8.7:
>> fam, port, *addr = socket.getpeername.unpack('nnC4')
=> [4098, 80, 209, 191, 122, 70]
>> addr
=> [209, 191, 122, 70]
>> addr.join('.')
=> "209.191.122.70"
Ruby 1.9 makes it a little more straightforward:
>> port, ip = Socket.unpack_sockaddr_in(socket.getpeername)
=> [80, "209.191.122.70"]
>> ip
=> "209.191.122.70"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With