getaddrinfo抛出异常

时间:2018-04-24 15:07:11

标签: c++ sockets

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

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函数用值填充结果结构。

关于问题可能出现的任何指示。

1 个答案:

答案 0 :(得分:4)

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

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

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