我遇到一个奇怪的错误,我在网上找不到任何地方。我试图打开一个套接字并绑定(bind)它,这样我就可以发送一个 UDP 数据包。但是,当我尝试检查绑定(bind)是否成功时,它不会编译。根据我的阅读,bind() 应该返回一个 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))
关于c++ - winsock bind 无法转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35692486/