【发布时间】:2021-12-02 00:29:00
【问题描述】:
我正在将旧代码替换为 linux。我正在使用:
server_host = getipnodebyname(host.c_str(), AF_INET, 0, &err_num);
和
server_host = getipnodebyaddr(addr, sizeof(INET_ADDRSTRLEN), AF_INET, &err_num);
它必须被新的 getaddrinfo() 替换。
在我添加的那一刻:
struct addrinfo *p_addr = (struct addrinfo *) NULL;
struct addrinfo hints={0}; //Initialize the addrinfo hints
char addr[INET_ADDRSTRLEN]={0};
int result = 0;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET; //Request for IPV4 ADDRESSES ONLY
result = getaddrinfo(host.c_str(), NULL, &hints, &p_addr);
但我需要在 hostent 结构中填充收集到的信息:
hostent *server_host;
为了与其他代码的兼容性。 我可以使用 gethostbyname() 直接获取主机结构,但我想避免它。 你有什么建议?
【问题讨论】:
标签: c++ sockets network-programming posix