加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在TCPServer(Ruby)中,如何从客户端获取IP / MAC?

发布时间:2020-12-16 20:59:20 所属栏目:百科 来源:网络整理
导读:我想在 Ruby中的TCPServer中获取客户端的IP地址.并且(如果可能的话)MAC地址. 例如,Ruby中的时间服务器,请参阅注释. tcpserver = TCPServer.new("",80)if tcpserver puts "Listening" loop do socket = tcpserver.accept if socket Thread.new do puts "Conne
我想在 Ruby中的TCPServer中获取客户端的IP地址.并且(如果可能的话)MAC地址.

例如,Ruby中的时间服务器,请参阅注释.

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

非常感谢你!

解决方法

Ruby 1.8.7:
>> fam,port,*addr = socket.getpeername.unpack('nnC4')
=> [4098,80,209,191,122,70]
>> addr
=> [209,70]
>> addr.join('.')
=> "209.191.122.70"

Ruby 1.9使它更直接:

>> port,ip = Socket.unpack_sockaddr_in(socket.getpeername)
=> [80,"209.191.122.70"]
>> ip
=> "209.191.122.70"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读