热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux教程>编程开发>

介绍守护进程XINETD与SOCKET程序的含义

来源: 作者: 时间:2007-06-25 Tag: 点击:

 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

最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册