Я пытаюсь сделать свои первые шаги в программировании на udp / tcp, и у меня возникла проблема.
После компиляции и запуска nslookup.c (я использую Linux Ubuntu) я получаю веб-информацию, пока я не набирал протокол перед доменом.
Например, набрав ./nslookup www.yahoo.com
- будет работать нормально.
Однако ввод ./nslookup http://www.yahoo.com
- приведет к ошибке: Error in resolving hostname
.
вот код, который я использую:
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char* argv[]) {
struct addrinfo* res;
char* hostname;
char* hostaddr;
struct sockaddr_in* saddr;
if (argc != 2) {
perror("Usage: hostnamelookup <hostname>\n");
exit(1);
}
hostname = argv[1];
if (0 != getaddrinfo(hostname, NULL, NULL, &res)) {
fprintf(stderr, "Error in resolving hostname %s\n", hostname);
exit(1);
}
saddr = (struct sockaddr_in*)res->ai_addr;
hostaddr = inet_ntoa(saddr->sin_addr);
printf("Address for %s is %s\n", hostname, hostaddr);
exit(0);
}
В чем причина этой проблемы?
Спасибо