gpt4 book ai didi

C:编写 RPC 低级应用程序:从客户端获取 IP 地址

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:01 25 4
gpt4 key购买 nike

我已经将服务器-客户端应用程序编写为 RPC(低级)。

这是我的服务器功能,用于验证我的 IP 地址(这里,只是必要的信息):

 int *checkip_1_svc(ip_adress *argp, struct svc_req *rqstp)
{
static int result;
struct sockaddr_in test_ip;

result =1;

return(&result);
}

现在我想从连接的客户端打印 IP 地址。

我试过:

printf("Clientadress:%s", rqstp->rq_xprt->xp_raddr.sin_addr.s_addr);

这是行不通的。我遇到段错误。

最佳答案

s_addr 最有可能是一个无符号的 32 位整数,因此您可以使用 %u%s:

printf("client address: %u", rqstp->rq_xprt->xp_raddr.sin_addr.s_addr);

要以 a.b.c.d 符号打印它,您可以使用:

#define SPLIT_S_ADDR_INTO_BYTES( \
s_addr) \
((s_addr) >> 24) & 0xFF, \
((s_addr) >> 16) & 0xFF, \
((s_addr) >> 8) & 0xFF, \
((s_addr) ) & 0xFF

...

printf(
"client address: %hu.%hu.%hu.%hu",
SPLIT_S_ADDR_INTO_BYTES(ntohl(rqstp->rq_xprt->xp_raddr.sin_addr.s_addr)));

...

有关ntohl()的详细信息,请参阅man ntohl()

关于C:编写 RPC 低级应用程序:从客户端获取 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com