سؤال

لقد كنت أستخدم getAddrinfo للبحث عن عناوين المقبس لأوامر Socket الأساسية. على الرغم من ذلك ، على الرغم من ذلك ، فإن العناوين التي تعود إليها هي لعناوين IP الزائفة ، والتي وجدتها باستخدام Inet_ntop. لقد جربت الكود الخاص بي ، وكذلك المقدم في دليل Beej, ، وكلاهما ينتج نفس النتائج. هذا هو الرمز:

struct addrinfo hints, *info;
int status;

memset(&hints, 0, sizeof hints);

hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;

if(status = getaddrinfo(address, port, &hints, &info)) {
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
}

char ip4[INET_ADDRSTRLEN];
inet_ntop(AF_INET, info->ai_addr, ip4, INET_ADDRSTRLEN);

std::cout<<ip4<<std::endl;

بغض النظر عن العنوان الذي أستخدمه ، فإنه يعطيني دائمًا عنوان IP للنموذج

16.2.x.y

حيث 256*x + y يساوي رقم المنفذ. هل سبق لأي شخص أن يرى هذا يحدث ، أو هل يمكن لأي شخص أن يخمن لماذا يعطيني هذا؟

هل كانت مفيدة؟

المحلول

ألا ينبغي أن تمر

((sockaddr_in const *)info->ai_addr)->sin_addr

ل inet_ntop?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top