严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2664 “int connect(SOCKET,const sockaddr *,int)”: 无法将参数 2 从“SOCKADDR_IN *”转换为“const sockaddr *” spder C:\Users\MacBook Pro\Desktop\project\spder\spder\spider.cpp 76
麻烦各位指点
这个错误提示是因为传入的参数类型不匹配导致的。SOCKADDR_IN 是 SOCKADDR 的一种特殊情况,但是在 connect 函数中,第二个参数需要的是 const sockaddr * 类型的数据。
你可以尝试将 SOCKADDR_IN 类型的变量转换为 const sockaddr * 类型的指针,即:
SOCKADDR_IN addr;
// 填充 addr 数据...
const sockaddr * pAddr = reinterpret_cast<const sockaddr*>(&addr); // 将 addr 转换为 const sockaddr* 类型
connect(sock, pAddr, sizeof(addr));
这里使用了 reinterpret_cast 进行类型转换,将 SOCKADDR_IN 类型的变量的地址转换为 const sockaddr* 类型的指针。这样就可以将 addr 传给 connect 函数了,同时也确保了数据不会被修改。