string
이 canonical name
또는 IP address
인 경우 어떻게 알 수 있습니까?정식 이름 또는 IP 주소 - 소켓, 리눅스 및 C
argv[1]
가 IP address
경우 내가 할 때문에 :
sscanf(argv[2],"%" SCNu16,&server_port);
inet_aton(argv[1],&server_address);
remote_address.sin_family = AF_INET;
remote_address.sin_port = htons(server_port);
remote_address.sin_addr = server_address;
그리고는 argv [1]을 canonical name
경우 내가 할 : 나는 자리에 있어야하는 일 또한
h = gethostbyname(server);
indirizzo_remoto.sin_family = AF_INET;
indirizzo_remoto.sin_port = htons(porta_server);
indirizzo_remoto.sin_addr = XYZ;
을, XYZ
?
가능한 해결책 :
struct in_addr indirizzo_server;
struct hostent *h;
h = gethostbyname(server);
inet_aton(h->h_addr_list[0],&indirizzo_server);
indirizzo_remoto.sin_family = AF_INET;
indirizzo_remoto.sin_port = htons(porta_server);
indirizzo_remoto.sin_addr = indirizzo_server;
모든 숫자와 마침표가 맞는지 확인하십시오. [0-255]. [0-255]. [0-255]. [0-255]. 비 숫자/비 기간이있는 경우 호스트 이름 일 가능성이 큽니다. –
getaddrinfo()가 호스트 문자열 또는 IP 주소 문자열과 함께 작동하지 않습니까? – Bert
숫자를 확인하는 경우 문자열을 정수 값으로 변환해야합니다. 일부 정식 이름은 올바른 IP가 아니더라도이 범위에 있습니다. – Magn3s1um