• 【linux高级程序设计】(第十六章)网络服务器应用设计


    xinetd服务介绍

    xinetd是Linux下的一个网络守候进程,用来统一管理网络负载不大的一组小型网路服务。

    一些小型的网络服务,比如时间,telnet服务,不以守候进程出现,而是让xinetd服务以守候进程出现。如果某客户端发起连接,xinetd服务将接收该连接,创建新进程,根据请求信息决定执行具体的服务代码。

    我的虚拟机上居然没有...先安装一下吧

    sudo apt-get install xinetd

    xinetd守候进程的配置文件, /etc/xinetd.conf 内容如下

    /etc/xinetd.d 目录提供服务链接信息:

    基于xinetd创建网络服务过程:

    以一个时间服务器为例,在客户端发起连接后为其返回一个当前系统时间。

    (1)编写源代码daytime_inetd.c 编译后放在/root/kzy/下面

    #include<time.h>
    #include<unistd.h>
    #include<sys/types.h>
    #include<signal.h>
    #include<fcntl.h>
    #include<sys/param.h>
    #include<sys/syslog.h>
    #define MAXLINE 4096
    int main(int argc, char **argv)
    {
        socklen_t len;
        struct sockaddr *cliaddr;
        char buff[MAXLINE];
        time_t ticks;
        ticks = time(NULL);   //获取当前时间值
        snprintf(buff, sizeof(buff), "%.24s
    ", ctime(&ticks)); //转换为时间字符串
        write(0, buff, strlen(buff));  //网络中,将0重定向到了socket文件描述符,向0写 相当于想socket写
        close(0);
        exit(0);
    }

    (2)修改/添加启动配置  在/etc/xinetd.d/ 下添加一个文件名为daytime_inetd配置文件

    service daytime_inetd
    {
        disable = no  //标识xinetd守候进程支持此服务,设置yes将禁止
        flags = REUSE
        socket_type = stream  //基于TCP的连接
        wait = no
        user = root   //执行用户为root
        server = /root/kzy/daytime_inetd  //连接后运行代码位置
        log_on_failure += USERID
    }

    (3)在/etc/services文件中为该服务指定应用端口。 注意不能与已经使用的端口冲突。这里用6666

    (4)重新启动网络服务

    service xinetd restart

    (5)运行 

    telnet localhost 6666

    郁闷,到这里出问题了。总是说连接不上,不懂????下面是出错信息

  • 相关阅读:
    大数据集群迁移的那一夜是怎么过的
    什么是Lambda架构
    从0到1搭建自助分析平台
    业务重要?还是技术重要?
    如何从0到1搭建大数据平台
    从0到1搭建大数据平台之数据采集系统
    高频面试题:秒杀场景设计
    面试官:面对千万级、亿级流量怎么处理?
    来自朋友最近阿里、腾讯、美团等P7岗位面试题
    《我想进大厂》之JVM夺命连环10问
  • 原文地址:https://www.cnblogs.com/dplearning/p/4710785.html
Copyright © 2020-2023  润新知