1.Xinetd提供被动式的超级服务,也就是服务程序是被使用端所启动,平时则无须存在。例如,ftp, telnetd, pop3,imap, auth等等,这些服务没有人使用时,无须启动。此外,xinetd将socket转换成stdin/stdout,因而使得网路服务程式设计大大简化,您可以只用printf及fgets便可完成处理很复杂的网路协定。
2.一个简单的服务程序 goodie
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
char *cmds[]={
"help",
"say",
"hello",
"bye",
"exit",
NULL
};
int getcmd(char *cmd)
{
int n=0;
while (cmds[n]!=NULL) {
if (strncasecmp(cmd,cmds[n],strlen(cmds[n]))==0) return n;
n++;
}
return -1;
}
void main(void)
{
char buf[1024];
int ok;
printf("Welcome to goodie service! ");
fflush(stdout);
ok=0;
do {
while (fgets(buf,1023,stdin)==NULL);
switch (getcmd(buf)) {
case -1: printf("Unknown command! "); break;
case 0:
printf("How may I help you, sir? ");
int j=0;
while(cmds[j++]!=NULL)printf(” %s\t\t“,cmds[j-1]);
break;
case 1: printf("I will say %s",&buf[3]); break;
case 2: printf("How're you doing today? "); break;
case 3: printf("Si ya, mate! "); ok=1; break;
case 4: printf("Go ahead! "); ok=1; break;
}
fflush(stdout);
} while (!ok);
}