Manjaro 开启 xinetd daytime 服务:/etc/xinetd.d 没有daytime 文件怎么办

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012814856/article/details/93528232

一、引言

最近在学习 《Unix网络编程 卷1:套接字联网 API》。在编译其第一份代码 daytimetcpcli.c 的时候,发现作者使用到了 daytime 服务。比如下面这行代码:

servaddr.sin_port   = htons(13);	/* daytime server */

根据网上搜索相关信息得知,13 就是 xinet 内置的 daytime 服务的运行端口,其作用是,当有客户端请求 13 端口,daytime 服务则返回一串表示系统时间的字符串,比如:

25 JUN 2019 05:30:36 CST

因为我自己电脑上使用的是 Manjaro 系统(同 ArchLinux),因此在开启 xinetd daytime 服务上遇到了一些与其他系统(Ubuntu、Centos)不同的问题,比如说:

我安装完 xinetd 之后,在 /etc/xinetd.d 目录下根本就没有 daytime 文件。

接下来,我就把我解决这个问题的方法记录下来,以供网友们参考。

二、解决

根据网上的教程,安装完 xinetd 之后,到 /etc/xinetd.d 文件夹下编辑下 daytime 文件内容,将 disable 设置为 no 即可。

但是,等我安装完之后,根本就没发现有 daytime 文件。

不过天无绝人之路,我在另一个虚拟机 Ubuntu 环境下安装了 xinetd,然后在 /etc/xinetd.d 中找到 daytime 文件,然后将其复制到 Manjaro 的对应韦志中,新建一个 daytime 文件,修改了下 disable 的值为 no,重启了下 xinetd 服务,竟然就成功了!

这里我说的有点快,我简单总结下步骤:

1. 安装 xinetd

$ sudo pacman -S xinetd

2. 编辑 daytime

$ cd /etc/xinetd.d
$ sudo vim daytime

粘贴以下内容:

# description: An internal xinetd service which gets the current system time
# then prints it out in a format like this: "Wed Nov 13 22:30:27 EST 2002".
# This is the tcp version.
service daytime
{
        disable         = no
        type            = INTERNAL
        id              = daytime-stream
        socket_type     = stream
        protocol        = tcp
        user            = root
        wait            = no
}

# This is the udp version.
service daytime
{
        disable         = no
        type            = INTERNAL
        id              = daytime-dgram
        socket_type     = dgram
        protocol        = udp
        user            = root
        wait            = yes
}

3. 重启 xinetd.service

$ systemctl enable xinetd.service
$ systemctl restart xinetd.service

可以通过下面这个命令来查看是否开启 xinetd 服务

$ systemctl list-unit-files

4. 验证 daytime 服务
这样,运行《Unix网络编程 卷1:套接字联网 API》的 daytimetcpcli.c 代码,即可看到运行结果:

$ ./daytimetcpcli 127.0.0.1
25 JUN 2019 05:30:36 CST

至此,这个问题算是解决了:)

希望这篇博客能够给你带来一些帮助。

展开阅读全文

daytime服务连接超时,我这代码有错误吗?

12-31

connect.hrnrn[code=C/C++]rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rnrn#ifndef INADDR_NONErn#define INADDR_NONE 0xffffffffrn#endifrnrnint connectsock(const char *host,const char *service,const char *transport)rnrn struct hostent *phe;rn struct servent *pse;rn struct protoent *ppe;rn struct sockaddr_in sin;rnrn int s,type;rn memset(&sin,0,sizeof(sin));rn sin.sin_family=AF_INET;rnrn if(pse=getservbyname(service,transport))rn rn sin.sin_port=ntohs(pse->s_port);rn rn else if((sin.sin_port=htons((unsigned short)atoi(service)))==0)rn rn printf("can't get \" %s \" service entry\n",service);rn exit(1);rn rn char str[20];rn gethostname(str,sizeof(str));rn if(phe=gethostbyname("www.baidu.com"))rn rn memcpy(&sin.sin_addr,phe->h_addr,phe->h_length);rn rn else if((sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE)rn rn printf("can't get \" %s \" protocol entry\n",transport);rn exit(1);rn rnrn if(strcmp(transport,"udp")==0)rn type=SOCK_DGRAM;rn elsern type=SOCK_STREAM;rnrn s=socket(AF_INET,type,0);rn if(s<0)rn rn perror("socket");rn exit(1);rn rnrn if(connect(s,(struct sockaddr *)&sin,sizeof(sin))<0)rn rn perror("connect");rn exit(1);rn rn return s;rnrnrn[/code]rnrn[code=C/C++]rn#include rn#include rn#include rn#include rn#include rn#include "connectsock.h"rnrn#define LINELEN 128rnrnint TCPdaytime(const char *host,const char *service);rnrnint main(int argc,char *argv[])rnrn char *host="loaclhost";rn char *service="daytime";rn switch(argc)rn rn case 1:rn host="loaclhost";rn break;rn case 3:rn service=argv[2];rn break;rn case 2:rn host=argv[1];rn break;rn default:rn fprintf(stderr,"usage:TCPDaytime [host[port]]\n");rn exit(1);rn rnrn TCPdaytime(host,service);rn exit(0);rnrnrnint TCPdaytime(const char *host,const char *service)rnrn char buf[LINELEN+1];rn int s,n;rn s=connectsock(host,service,"tcp");rn while((n=read(s,buf,LINELEN)) > 0)rn rn buf[n]='\0';rn fputs(buf,stdout);rn rnrnrn[/code]rnrn连接总说超时,是这些网站本身没提供这服务还是我电脑问题?我是在cygwin的,用自己的电脑发现拒绝请求 论坛

没有更多推荐了,返回首页