在Linux下轻松实现网络服务
软件世界
在Linux下有许多网络服务器在运行,像常用的telnet、ftp等,它们处于监听状态,等待用户的连接请求。我们用命令netstat -a可查看到那些处于listen状态的服务器。这些服务器在没有连接请求时,处于睡眠状态,当有连接请求时,便由“网络守护进程”激活,我们可进行正常网络业务操作。“网络守护进程”具有如此大的威力,它是什么呢?其实它是一个在后台运行、但不受任何终端控制的网络服务器进程。在Linux下,它就是xinetd。它有两个最大的优点:一是配置简单方便,编码量少;二是进程数目少,节省资源,管理容易。下面,我用一个简便的方法进行配置与编码:
1.增加监听端口。在文件/etc/services的最后增加如下一行内容:
xjq 8090/tcp
2.配置xinetd文件。在目录/etc/xinetd.d 增加一个文件,文件名为xjq,内容如下:
service xjq
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /etc/xjqd
log_on_failure += USERID
}
3.编写服务器程序。服务器程序源代码如下:
#include
#include
#include
#include
main
{
int sock;
struct sockaddr_in cli;
char buf[1024];
int len;
sock=0;
len=sizeof(cli);
getpeername(sock,&cli,&len);
read(sock,buf,1024);
sprintf(buf,"Return: Ok ! you success !");
write(sock,buf,strlen(buf)) ;
close(sock);
}
录入完毕后,用如下格式编译为网络守护进程可调用的程序。
cc t.c -o /etc/xjqd
做完以上工作后,重新启动计算机。开机后,你可执行 telnet 127.0.0.1 8090 回车,然后任意输入一字串,回车是否看到你的大作了。如果你有兴趣,还可以将上述服务器程序稍做修改,限制某些主机登录到你的机器的8090端口。你是否受到一点启发,可以通过修改端口或IP地址等信息,做一个简易的防火墙程序,还可以结合系统队列做其他网络工程项目。