xinetd服务器
xinetd 服务器
配置xinetd服务
1.xinetd可以统一管理很多服务进程
绑定、侦听和接受来自对服务器每个端口的请求
有客户端访问时,调用相应的服务器程序响应
节约系统内存资源
同时响应多个客户端的请求
windows没有该功能
多数UNIX系统是使用inetd实现相同功能
配置文件解析
选项名称 说明
flegs 如果只指定NAMEINARAGS,那么它就使参数和inetd一样地传递
type 如果服务器不再/etc/services中,则使用UNLISTED,否则可以忽略这一行
port 如果type=UNILISTED,则在这里指定端口号
socket_type 如果是TCP,使用stream;如果是UDP,使用dgram
protocol 指定TCP,还是UDP
wait TCP设置为NO.对于UDP,如果服务器连接远程主机并未不同的用户建立新的进程,no,如果UDP在它的端口上处理所有的信息包,直到他被终止,则为yes
user 指定程序的运行身份
server 服务程序的完整路径
server_args 参数。为了和inetd兼容,flags设置为NAMEINARGS,则参数使用服务器名
编写xinetd程序
使用标准输入输出
当使用xinetd的时候,它通过两个方法传递socket:如文件描述0和1
它们和文件描述符一样,分别代表标准输入和标准输出
因为标准输出sys.stdout默认是被缓冲的,所以为了实时性,需要使用到sys.stdout.flush()函数
使用这两种方法,服务器端口程序既可以当成网络服务器程序使用,也可以像普通脚本程序一样执行
使用socket对象
通过调用socket.fromfd()可以建立socket对象
建立socket对象需要使用xinetd传递给程序的本件描述
fromfd()函数需要文件数量和一些标准的参数,一些参数与前一章内容相同