gpt4 book ai didi

c - 如何在 Windows 上使用 getaddrinfo()

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:12 28 4
gpt4 key购买 nike

我正在尝试使用 mingw+msys 构建我的应用程序。

我的代码使用 winsock。当我编译它时,我收到以下错误消息:

$ gcc -o sample sample.c -lws2_32
C:\Users\user\AppData\Local\Temp\ccsdWlQR.o:sample.c:(.text+0xeb): undefined reference to `getaddrinfo'
collect2.exe: error: ld returned 1 exit status

这是我从 Linux 迁移而来的代码,其中更改了一些 header 。

#include <stdio.h>
#include <WinSock2.h>
#include <WS2tcpip.h>

main(int argc,char *argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);

printf("Hello world with winsock");

int sock;
char *hostAddress;
struct addrinfo hints,*res;
int err;
memset(&hints,0,sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;
getaddrinfo("127.0.0.1",12345,&hints,&res);

printf("getaddrinfo %s\n",strerror(errno));
printf("getaddrinfo : %s \n",gai_strerror(err));


struct sockaddr_in *addr;
struct addrinfo *rp;
for (rp = res; rp != NULL; rp = rp->ai_next) {
addr = (struct sockaddr_in *)rp->ai_addr;
printf("dstPort = %d\n",ntohs(addr->sin_port));
printf("dstAddr = %s\n",inet_ntoa((struct in_addr)addr->sin_addr));
hostAddress = inet_ntoa((struct in_addr)addr->sin_addr);
}
WSACleanup( );

}

如何在 Windows 中使用 gettarrinfo()

这是尝试 d​​greenday 的文章后消息更改的附加信息。

sample.c:22:2: warning: passing argument 2 of 'getaddrinfo' makes pointer from i
nteger without a cast [enabled by default]
getaddrinfo("124.0.0.1",12345,&hints,&res);
^
In file included from sample.c:4:0:
c:\mingw\include\ws2tcpip.h:391:12: note: expected 'const char *' but argument i
s of type 'int'
int WSAAPI getaddrinfo (const char*,const char*,const struct addrinfo*,

最佳答案

我怀疑您只是有一个过时的 SDK,并且您的 SDK 中提供的导入库不包括 getaddrinfo。你的程序,按照你在我的 mingw 系统上描述链接的方式编译。

要么更新您的 mingw 系统,要么创建一个包含 getaddrinfo 的导入库。

注意:

getaddrinfo("124.0.0.1",12345,&hints,&res);

应该是:

getaddrinfo("124.0.0.1","12345",&hints,&res);

并且您没有正确检查错误。您必须注意 getaddrinfo 返回的值。忽略它然后继续检查 errno 是不合适的。

关于c - 如何在 Windows 上使用 getaddrinfo(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22008864/

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