gpt4 book ai didi

ruby TFTP 服务器

转载 作者:数据小太阳 更新时间:2023-10-29 07:11:19 26 4
gpt4 key购买 nike

我将以下代码放在一起用于一个简单的 Ruby TFTP 服务器。它工作正常,因为它监听端口 69 并且我的 TFTP 客户端连接到它,我能够将数据包写入 test.txt,但我不只是写入数据包,我希望能够从我的客户端通过 TFTP 传输文件到/temp 目录。

预先感谢您的帮助!

require 'socket.so'

class TFTPServer
def initialize(port)
@port = port
end

def start
@socket = UDPSocket.new
@socket.bind('', @port)
while true
packet = @socket.recvfrom(1024)
puts packet

File.open('/temp/test.txt', 'w') do |p|
p.puts packet
end
end
end
end

server = TFTPServer.new(69)
server.start

最佳答案

您可以使用 ruby​​ 的 Tempfile 而不是写入/temp/test.txt|类

所以在你的例子中:

require 'socket.so'
require 'tempfile'

class TFTPServer
def initialize(port)
@port = port
end

def start
@socket = UDPSocket.new
@socket.bind('', @port)
while true
packet = @socket.recvfrom(1024)
puts packet

Tempfile.new('tftpserver') do |p|
p.puts process_packet( packet )
end
end
end
end

server = TFTPServer.new(69)
server.start

这将在您的/tmp 目录中创建一个保证唯一的临时文件,其名称基于“tftpserver”。

编辑:我注意到你想写入/temp(不是/tmp)来执行此操作你可以执行 Tempfile.new('tftpserver', '/temp') 来指定特定的临时文件目录。

编辑 2:对于任何感兴趣的人,都有一个图书馆可以做到这一点 https://github.com/spiceworks/net-tftp

关于 ruby TFTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6038283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com