tga*_*ews 0 ruby dns udp network-programming eventmachine
我有一个基本的ruby程序,它侦听端口(53),接收数据然后发送到另一个位置(谷歌DNS服务器 - 8.8.8.8).响应不会回到原来的目的地,或者我没有正确转发它们.
这是代码.NB我正在使用EventMachine
require 'rubygems'
require 'eventmachine'
module DNSServer
def post_init
puts 'connected'
end
def receive_data(data)
# Forward all data
conn = UDPSocket.new
conn.connect '8.8.8.8', 53
conn.send data, 0
conn.close
p data.unpack("H*")
end
def unbind
puts 'disconnected'
end
end
EM.run do
EM.open_datagram_socket '0.0.0.0', 53, DNSServer
end
Run Code Online (Sandbox Code Playgroud)
任何关于调试原因或提示的想法都将非常受欢迎.
明显的问题是:
send而不是connect#send_data)发送回原始客户端这似乎有效:
require 'socket'
require 'rubygems'
require 'eventmachine'
module DNSServer
def receive_data(data)
# Forward all data
conn = UDPSocket.new
conn.send data, 0, '8.8.8.8', 53
send_data conn.recv 4096
end
end
EM.run do
EM.open_datagram_socket '0.0.0.0', 53, DNSServer
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |