winsock bind无法转换为int

时间:2016-02-29 05:22:08

标签: c++ sockets udp winsock winsock2

我遇到一个奇怪的错误,我无法在网上找到任何地方。我试图打开一个套接字并绑定它,以便我可以发送一个UDP数据包。但是,当我尝试检查绑定是否成功时,它将无法编译。根据我的阅读,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()以某种方式过载(也许我已经包含了另一个库)

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

更好的解决方案是一劳永逸地停止using namespace std;。它对你有害无益(考虑到它,你没有任何好处)。