我正在实现一个 ruby 服务器来处理从 GPRS 模块创建的套接字。问题是当模块掉电时,没有迹象表明插座已关闭。
我正在做线程来处理同一个服务器的多个套接字。我要问的是:有没有办法在线程内使用计时器,在每次套接字输入后重置它,如果它达到超时,关闭线程?我在哪里可以找到有关此的更多信息?
编辑:未检测到套接字关闭的代码示例
require 'socket'
server = TCPServer.open(41000)
loop do
Thread.start(server.accept) do |client|
puts "Client connected"
begin
loop do
line = client.readline
open('log.txt', 'a') { |f|
f.puts line.strip
}
end
rescue
puts "Client disconnected"
end
end
end