winsock bind 无法转换为 int

winsock bind cannot be converted to int

我遇到一个奇怪的错误,我在网上找不到任何地方。我试图打开一个套接字并绑定它,这样我就可以发送一个 UDP 数据包。但是,当我尝试检查绑定是否成功时,它不会编译。根据我的阅读,bind() 应该是 return 一个 int,但由于某种原因它没有在我的程序中这样做。

SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
// handle errors
struct sockaddr_in local;
memset(&local, 0, sizeof(local));
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(0);
if (bind(sock, (struct sockaddr*)&local, sizeof(local)) == SOCKET_ERROR) {
    cout << "Binding error\n";
    return false;
}
return true;

我唯一的猜测是 bind() 以某种方式过载(可能是我包含的另一个库)

可能与 C++ 中的 std::bind 冲突。尝试添加全局命名空间:

 ::bind(sock, (struct sockaddr*)&local, sizeof(local))

更好的解决办法是一劳永逸地停止using namespace std;。它对你弊大于利(考虑到,它对你没有任何好处)。