上面的套接字调用抛出异常。这是代码段:
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
函数用值填充结果结构。
关于问题可能出现的任何指示。
答案 0 :(得分:4)
您对result
的使用似乎是正确的。
您是否可以定义int serverPort = 80
(或其他一些整数类型)而不是字符串?这与您尝试从地址0x00000050
(十进制中的80)读取的访问冲突一致。
getaddrinfo()
的第二个参数需要一个包含服务名称的以null结尾的字符串,该字符串可以是文本格式的端口号。你需要传入一个实际的字符串,不要简单地将整数类型转换为char*
指针。