Một dịch vụ inetd là thực sự tuyệt vời cho một trong những ứng dụng mà cần phải thực hiện trong dữ liệu và hành động với một mức độ tương tác với người dùng. CNTT hoạt động trên tcp/udp bằng cách truyền dữ liệu viva một ổ cắm từ (x) inetd đến std {in, out, err}. các ứng dụng inetd cũng hoạt động tốt với tcpwrappers để xâm nhập bảo mật mặc dù các tệp chính sách hệ thống và ACL.
Vì vậy, có bạn sẽ viết ứng dụng của bạn giống như ứng dụng bảng điều khiển vì trong thực tế, ứng dụng này là một ứng dụng giao diện điều khiển. Chỉ cần suy nghĩ của inetd như là một proxy ngược trong suốt từ mạng vào đầu vào của ứng dụng của bạn.
Lời khuyên, viết mã của bạn để xử lý tín hiệu quy trình một cách chính xác và nếu bạn cần tương tác với một quy trình khác trên hệ thống, hãy sử dụng ổ cắm unix/fifo cho điều đó.
Ngoài ra, đừng cố gắng viết một ứng dụng phát trực tuyến nhiều dữ liệu cùng một lúc hoặc cần nhiều kết nối. Khả năng mở rộng là một vấn đề như inetd trở thành một cổ chai, đây là lý do tại sao Apache và Sendmail giảm hỗ trợ cho inetd và ngồi như ứng dụng mono thay thế. HTTP phù hợp với vai trò này tốt hơn và kịch bản fastcgi (hoặc chèn khung yêu thích) với nginx hoạt động tốt nhất cho trường hợp sử dụng đó.
Một ví dụ tốt cho một inetd sẽ là:
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
Chỉnh sửa của bạn /etc/services
bao gồm ứng dụng của bạn như thế này: cổng myapp #/proto
và thêm ứng dụng của bạn để /etc/inetd.conf
(hoặc xinetd. d) như thế này: luồng myapp tcp6 hiện đang chờ myappuser/path/to/myapp myapp -arg_flags
Nguồn
2012-10-07 09:44:29
Có mẫu nào, C++ hoặc C hay không? –
@Quandary: đã cập nhật. – cHao
Cảm ơn, trông thực sự rất đơn giản.Có thực sự là không nhiều hơn với nó? Vì vậy, nếu một khách hàng kết nối với cổng bất cứ điều gì, ông nhận được "tên của bạn là gì", gửi tên của mình, và được trở lại "Hi". Và tôi cho rằng thời gian chờ được xử lý bởi xinetd. Rất buồn cười thực sự. Tôi nghĩ rằng tôi phải xem xét lập trình xinetd, nó làm cho một máy chủ trông đơn giản như một chương trình điều khiển đơn khách. –