apue2的ruptime和ruptimed程序例子

本文介绍了一个C/S架构的程序实例,包含客户端与服务器端的实现。客户端通过ruptime.c和clconn.c构成,服务器端由ruptimed.c和initsrv1.c构成。客户端发送请求给服务器,服务器执行uptime命令并将结果返回给客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个例子是一个c/s程序,有4个文件:ruptime.c clconn.c ruptimed.c initsrv1.c,其中ruptime.c和clconn.c构成client, ruptimed.c initsrv1.c构成server, client向server发送请求,server接到请求后运行uptime命令,并把结果返回给client。编译运行方式如下:

1. 编辑/etc/services文件,追加

ruptime    4000/tcp                #apue2的例子程序

重启系统,这样系统新增加一个服务ruptime,为其分配的端口号是4000,然后我们在ruptime.c的函数调用

getaddrinfo (argv[1], "ruptime", &hint, &ailist)

才能成功,并返回主机和服务对应的地址信息,同理在ruptimed.c的函数调用

getaddrinfo (host, "ruptime", &hint, &ailist)

也可以正确工作。

getaddrinfo函数的原型为:

int getaddrinfo(
    const char* host
    const char* service
    const struct addrinfo* hints,
    struct addrinfo** res
);

其作用是将一个主机名字和服务名字映射到一个地址,也就是说,给定主机名host和服务名service,函数返回

这个主机和服务的一切网络信息(address information),这些信息存放到res参数中,res是一个struct addrinfo

原型为:

struct addrinfo {

    int ai_flags;

    int ai_family;

    int ai_socktype;

    int ai_protocol

    socklen_t ai_addrlen;

    struct sockaddr *ai_addr;

    char *ai_canonname;

    struct addrinfo *ai_next;

}

2. 编译运行

apue2> gcc -o ruptime ruptime.c clconn.c libapue.a
apue2> gcc -o ruptimed ruptimed.c initsrv1.c libapue.a
apue2> ./ruptimed
apue2> ./ruptime localhost
 09:15:53 up 28 min,  2 users,  load average: 0.10, 0.22, 0.18
apue2>



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值