gpt4 book ai didi

c - gethostbyname() 未知错误

转载 作者:行者123 更新时间:2023-11-30 16:55:14 25 4
gpt4 key购买 nike

我正在尝试从给定域接收 IP 地址。域名从客户端发送到本地服务器,在服务器中我需要找到 IP。

这是我的代码:

int hostname_to_ip(char * hostname, char* ip)
{
struct hostent *he;
struct in_addr **addr_list;
int i;

if ( (he = gethostbyname( hostname ) ) == NULL)
{
herror("gethostbyname");
return 1;
}

addr_list = (struct in_addr **) he->h_addr_list;

for(i = 0; addr_list[i] != NULL; i++)
{
strcpy(ip , inet_ntoa(*addr_list[i]) );
return 0;
}

return 1;
}

int main() {
int s;
struct sockaddr_in server, client;
int c, l, i;
char buffer[100];
char ip[100];
struct hostent *ipAddress;
struct in_addr **addr_list;

s = socket(AF_INET, SOCK_DGRAM, 0);
if (s < 0) {
printf("Socket creation error!\n");
return 1;
}

memset(&server, 0, sizeof(server));
server.sin_port = htons(1234);
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;

if (bind(s, (struct sockaddr *) &server, sizeof(server)) < 0) {
printf("Bind error!\n");
return 1;
}

l = sizeof(client);
memset(&client, 0, sizeof(client));

for (i = 0; i < 10000; i++) {
recvfrom(s, &buffer, sizeof(buffer), MSG_WAITALL, (struct sockaddr *) &client, &l);
printf("%s\n", "Client connected: ");
printf("%s\n", buffer);
char *host = buffer;
hostname_to_ip(buffer, ip);
printf("%s\n", ip);
}

close(s);
}

收到的消息是:未知主机,我找不到原因。

我确信我发送了正确的域名,例如“www.google.com”

最佳答案

看起来这个 for 循环格式错误:

for(i = 0; addr_list[i] != NULL; i++)  {
strcpy(ip , inet_ntoa(*addr_list[i]) );
return 0;
}

它将在第一次迭代后退出并返回。

我将从解决这个问题开始。

关于c - gethostbyname() 未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40351911/

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