【中华硕博网-全球500所高校指定报名中心】
【在职研究生】 【在职博士】 【MBA/EMBA】
  您现在的位置: 中华硕博网 > IT培训 > 服务器 > Linux > 系统管理 > 文章正文
站内搜索:

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

作者:硕博网    文章来源:中华硕博网    点击数:    更新时间:2008-5-3
中华硕博网(http://www.china-b.com)全球500所高校指定报名中心--介绍守护进程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

[1] [2] 下一页  

 相关热词搜索
>>更多
  • 此栏目下没有文章