gpt4 book ai didi

C gethostbyaddr 返回 NULL

转载 作者:行者123 更新时间:2023-11-30 17:23:15 24 4
gpt4 key购买 nike

我确实是 C 和套接字的初学者。我知道我不应该使用 gethostbyaddr 因为这是为了考试所以我必须使用他们告诉我使用的东西......我在 Linux 机器 (Ubuntu 14.04) 上使用此代码。

我正在尝试编写一个 echo c/s 程序。一切正常,但是当我尝试从服务器获取有关客户端的一些信息时,struct hostent * clienthost 为 null。

这是我的服务器.c:

int main(int argc, char * argv[])
{
struct sockaddr_in cliaddr, servaddr;
struct hostent * clienthost;
int port, sd, len;
char request[MAX_LENGTH];
const int on = 1;

port = atoi(argv[1]);

memset ((char *)&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = INADDR_ANY;
servaddr.sin_port = htons(port);

sd=socket(AF_INET, SOCK_DGRAM, 0);
setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
bind(sd,(struct sockaddr *) &servaddr, sizeof(servaddr));

for (;;)
{
len = sizeof(request);
recvfrom(sd, request, sizeof(request), 0, (struct sockaddr *) &cliaddr, &len);

clienthost = gethostbyaddr( (char *) &cliaddr.sin_addr, sizeof(cliaddr.sin_addr), AF_INET);
if (clienthost == NULL)
printf("client host information not found\n");
else
printf("Operation from: %s %i\n", clienthost->h_name,(unsigned)ntohs(cliaddr.sin_port));

sendto(sd, &request, sizeof(request), 0, (struct sockaddr *)&cliaddr, len);
}

return 0;
}

最佳答案

客户端是否有 DNS 条目 - 如果没有,请将其放入 /etc/hosts 中进行测试 – 艾德·希尔

关于C gethostbyaddr 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660261/

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