如何修改ip的PADDRINFOA结构
我迷上了getaddrinfo函数,我想修改ip的ppResult。如何修改ip的PADDRINFOA结构
f_getaddrinfo(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, PADDRINFOA *ppResult) {
// REAL FUNCTION
r_getaddrinfo(pNodeName,pServiceName,pHints,ppResult);
// FAIL
sockaddr_in addrIn;
inet_pton(AF_INET, "127.0.0.1", &addrIn.sin_addr);
const_cast<PADDRINFOA>(*ppResult)->ai_addr = (struct sockaddr*)&addrIn.sin_addr;
// FAIL
inet_pton(AF_INET, "127.0.0.1", const_cast<PADDRINFOA>(*ppResult)->ai_addr);
}
非常感谢
首先,不使用PADDRINFOA*
! PADDRINFOA
已经是指向ADDRINFOA
的指针,现在你实际上有双指针了。其实坚持struct addrinfo*
这是便携式。
反正试试这个:
PADDRINFOA result = *ppResult; // Should not do that, ppResult should be PADDRINFOA
struct sockaddr_in* addr = reinterpret_cast<struct sockaddr_in*>(result->ai_addr);
inet_pton(AF_INET, "127.0.0.1", &(addr->sin_addr));
编译错误“表达式必须有类指针类型” – NewCoder30
@ NewCoder30 OMG,为什么你的'ppResult'对象是'PADDRINFOA *' ??? 'PADDRINFOA'已经是'ADDRINFOA'的指针。无论如何,我已经更新了答案。 – freakish
非常感谢,工作!!!,对不起,我正在学习C/++编程,我不知道一些事情。我会学习更多。 – NewCoder30
欢迎堆栈溢出。请花些时间阅读[The Tour](http://*.com/tour),并参阅[帮助中心](http://*.com/help/asking)中的资料,了解您可以在这里问。 –
你的代码出了什么问题? –
@freakish我试过 - >错误“表达式必须有类指针类型” – NewCoder30