c++ - winsock bind 无法转换为 int

标签 c++ sockets udp winsock winsock2

我遇到一个奇怪的错误,我在网上找不到任何地方。我试图打开一个套接字并绑定(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/

相关文章:

c - 使用参数打开套接字

c++ - 使用 C++ 的 Oculus Rift VR

c++ - wxGrid GetSelectedCells 返回空数组

c++ - 类内的模板方法

linux - SO_REUSEPORT 与多播 UDP 的使用

python - 通过 UDP 发送字节列表

java - 如何在 Spring Boot 中实现 UDP 服务器以读取来自客户端的输入

c++ - 输出精度高于 double

c++ - 套接字的有效性

c++ - Boost::Asio 异步 UDP 服务器 - 未处理的异常消息