Inetd hizmetleri, veri alması gereken ve kullanıcıyla bir dereceye kadar etkileşim halinde olan bir uygulama için gerçekten harikadır. IT, viva'yı (x) inetd dizininden (in, out, err) std'ye veri sokarak tcp/udp üzerinden çalışır. inetd uygulamaları, sistem ilke dosyaları ve ACL'ye rağmen güvenliği güvenceye almak için tcpwrappers ile de iyi çalışır.
Evet, gerçekte bir konsol uygulaması olduğu için uygulamanızı bir konsol uygulaması gibi yazabilirsiniz. Ağdan uygulamanızın girişlerine şeffaf bir ters proxy olarak inetd düşünün.
Tavsiye edilen bir kelime, işlem sinyallerini doğru bir şekilde işlemek için kodunuzu yazın ve sistemde başka bir işlemle etkileşime girmeniz gerekiyorsa, bunun için unix soketleri/fifo kullanın. Ayrıca, çok fazla veriyi tek seferde akıtan veya çok fazla bağlantıya ihtiyaç duyan bir uygulama yazmaya da çalışmayın. Inetd bir şişe boynuna dönüştüğü için ölçeklenebilirlik bir sorundur, bu nedenle Apache ve Sendmail inetd için desteği bıraktı ve bunun yerine mono uygulamalar olarak oturdu. HTTP bu role daha iyi uyar ve nginx ile bir fastcgi (veya favori çerçeve ekle) betiği bu kullanım durumu için en iyi şekilde çalışır.
bir inetd'nin iyi bir örnek olacaktır:
lock = Mutex.new
trap :HUP { #log the connection and cleanup }
trap :USR1 { lock.synchronize do #stuff; end }
trap :TERM { #clean up }
trap :KILL { #clean up and die with error codes }
puts "App name - version"
loop do
('%s> ' % Console.prompt).display
input = gets.chomp
command, *params = input.split /\s/
case command
when /\Ahelp\z/i
puts App.help_text
when /\Ado\z/i
Action.perform *params
when /\Aquit\z/i
exit
else
puts 'Invalid command'
end
end
exit
Düzenleme senin /etc/services
senin böyle bir uygulamanın dahil edilmesine: myapp portu #/proto
ve /etc/inetd.conf
(veya xinetd'ye uygulamanızı ekleyin. d) bunun gibi: myapp akışı tcp6 şimdi myappuser/yol/to/myapp myapp -arg_flags
Herhangi bir örnek var mı, C++ veya C mi yoksa başka türlü mi? –
@Quandary: güncellendi. – cHao
Teşekkürler, gerçekten çok basit görünüyor.Gerçekten daha fazla değil mi? Eğer bir müşteri limana her hangi bir şekilde bağlanırsa, "adın ne" diye ismini alır, ismini gönderir ve "Hi" diye geri döner. Ve sanırım zaman aşımı xinetd tarafından ele alındı. Gerçekten çok komik. Ben xinetd programlama bir göz atmak zorunda düşünüyorum, bir sunucu tek bir istemci konsol programı kadar basit görünmesini sağlar. –