getaddrinfo 抛出异常

getaddrinfo throws exception

本文关键字:抛出异常 getaddrinfo      更新时间:2023-10-16

上面的套接字调用抛出异常。这是代码片段:

if (!getaddrinfo((PCSTR)serverHost.c_str(), (PCSTR)serverPort, &hints, &result))
return false;

看起来问题出在result struct.

这就是我的定义 -struct addrinfo *result = NULL;

我已经完全按照 msdn 页面中提到的方式定义并实现了它,但仍然看到问题。

以下是例外情况:

在 AnandServer .exe 中0x76406783 (KernelBase.dll) 引发异常: 0xC0000005:访问冲突读取位置0x00000050

我的理解是getaddrinfo函数用值填充结果结构。

有关问题可能在哪里的任何指示。

你对result的使用似乎是正确的。

您是否可能定义了int serverPort = 80(或其他一些整数类型),而不是字符串? 这与尝试从地址0x00000050(十进制为 80)读取时收到访问冲突是一致的。

getaddrinfo()的第二个参数需要一个以 null 结尾的字符串,其中包含服务名称,该服务名称可以是文本格式的端口号。 您需要传入一个实际的字符串,不要简单地将整数类型转换为char*指针。