为什么mac os x下ipv6的bind(.)会给我错误号47
Why does bind(..) for ipv6 under mac os x give me error number 47
我正在采取套接字编程的第一步,这增加了复杂性,我正在尝试使用ipv6:
不应该这样吗:
struct sockaddr_in6* addr = new sockaddr_in6;
int s = socket(AF_INET6, SOCK_STREAM, 0);
addr->sin6_addr = in6addr_any;
addr->sin6_port = 1234;
int ret = bind(s, (struct sockaddr*)addr, sizeof(struct sockaddr_in6));
将我机器上所有接口的套接字绑定到端口1234?问题是bind返回-1,errno为47根据errno.h为:
#define EAFNOSUPPORT 47 /* Address family not supported by protocol
family */
我错过了什么?
感谢
您应该将addr->sin6_family设置为AF_INET6,或者在将地址结构传递给bind()之前至少零初始化地址结构。
相关文章:
- 试图克服 std::bind 编译错误
- 带有 NORM 的 ZeroMQ - 地址已在使用 错误被抛出在第二个 .bind() 上 - 为什么?
- socket.io client std :: bind-错误C2338:元组索引限制
- 在spirit parser Action中,在上下文参数上编译boost :: bind(成员函数)上的错误
- 在 std::bind 中使用 std::bind :编译错误(隐式强制转换)
- 访问Boost Bind时,共享库中的C 符号查找错误
- C 11 std :: bind and auto的编译错误,用于回调函数参数
- 为什么使用std::bind出现参数错误
- 尝试使用 std::bind 重新分配 std::function 并得到错误"attempting to reference a deleted function"
- C++ Winsock 在 bind() 上给出 10038 错误
- std::bind 会导致非法的间接错误
- 错误 C2064 使用 <functional> 和<bind>
- std::make_pair VS2010 中 boost::bind 的错误
- std::bind() 错误:无法确定重载函数"boost::asio::io_service::run"的哪个实例
- 在boost::thread构造函数内部调用boost:;bind()时发生编译器错误
- std::bind 在 libstdc++ 中产生编译错误
- 在C中使用bind()时获取错误的IP地址
- Boost::bind重载操作符导致Boost未定义引用错误
- bind函数的输入参数错误
- 这是对std::bind的错误使用还是编译器错误?