【linux高级程序设计】(第十六章)网络服务器应用设计
2015-08-07 14:55
204 查看
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\r\n", 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
郁闷,到这里出问题了。总是说连接不上,不懂????下面是出错信息
相关文章推荐
- UNIX网络编程卷一:第五章 TCP客户/服务器程序实例
- tcpdump
- Qt PC 安卓 tcp传输文件
- HDU 5000 Clone (2014年鞍山赛区网络赛D题)
- Http请求之HttpClient + AsyncTask异步请求
- HttpURLConnection 提交表单+ 上传文件
- 完美网络
- 网络请求(一)
- TCP的状态兼谈Close_Wait和Time_Wait的状态
- 《图解TCP/IP》读书笔记1 - 网络基础
- 实现网站由http协议转为https协议
- HTTP协议详解之http请求分析
- 【python网络编程】多线程实现多用户全双工聊天
- httpclient httpget接口小demo
- C++网络编程笔记
- adb 通信协议分析以及实现 (三) (Adb 网络通信部分解析)
- Python网络编码
- android请求网络——第三方库android-async-http的使用(3)
- Nodejs Http发送post请求
- 搜索引擎与SEO的纽带——你应该知道的事:网络爬虫