gpt4 book ai didi

c++ - 无法使 getnameinfo 处理我的 UDP 代码

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:14 25 4
gpt4 key购买 nike

我有以下 UDP 客户端通信代码:

clUDPPort::clUDPPort(int prt,string hostname){ //client
nServerPort = prt;
szHostName = hostname;
nSocketId = socket (AF_INET , SOCK_DGRAM, 0 ) ;
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(nServerPort) ;
host = gethostbyname(szHostName.c_str()) ;
memcpy( (char*)&serverAddr.sin_addr,(char*) host->h_addr , host->h_length ) ;
//nSize = sizeof(serverAddr);
}

此代码是安装在嵌入式 Linux 设备上的 CGI 应用程序的一部分。在我的 PC 上测试时,主机名作为本地地址传递,如 192.168.2.50,当部署到设备时,主机名是 127.0.0.1,因为我的应用程序连接了一个服务程序。

问题是链接警告说:

/home/abdalla/XML_Communication/udpport.cpp:24: warning: gethostbyname is obsolescent, use getnameinfo() instead.

这是由 KDevelop 4.7 在 openSUSE 13.2 64 位上生成的。我尝试使用 getnameinfo 但无法弄清楚如何使其工作,因为根据 documentation它要求主机名和服务器名。显然在我的代码中主机和服务器是相同的。你能帮我让 getnameinfo 为我的代码工作吗?谢谢。

最佳答案

将名称转换为地址实际需要的可能是 getaddrinfo。查看linux man page有关详细信息,包括示例代码。

关于c++ - 无法使 getnameinfo 处理我的 UDP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com