介绍守护进程XINETD与SOCKET程序的含义
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); }
3.配置文件
在/etc/services 中加入如下项
goodie 12345/tcp
服务名是 goodie 服务端口是 12345 服务类型是 TCP
在/etc/xinetd.d目录下新检服务文件 goodie
输入内容:
service goodie { socket_type=stream protocal =tcp wait =no server = /{goodie dir}/goodir disable =no #初始化为开启服务监听 }
4.启动服务
先停止服务
killall xinetd
启动服务
/usr/sbin/xinetd -f /etc/xinetd.conf
5.开启终端连接
telnet localhost 12345
[2] 下一页
- 最新评论