Socket ms = WSASocket(AF_INET6, SOCK_RAW, IPPROTO_IP, NULL, 0 ,WSA_FLAG_OVERLAPPED);
bind(ms, (SOCKADDR *)&sa, sizeof(sa));
死活绑定不了,报错说参数无效,可是各参数的值都正确啊!!
请高手们赐教!!!!!!!!!!!!!!!!!!!在线等!!!!!急!!!!!!!!!
bind(ms, (SOCKADDR *)&sa, sizeof(sa));
死活绑定不了,报错说参数无效,可是各参数的值都正确啊!!
请高手们赐教!!!!!!!!!!!!!!!!!!!在线等!!!!!急!!!!!!!!!
SOCKADDR_STORAGE sa;
而不是用原来的
sockaddr_in
in6_addr bestlocalIP; //存放IPV6地址
sa.sin6_family = AF_INET6;
sa.sin6_port = htons(5002); //端口号随便设置的
sa.sin6_addr = bestlocalIP;
ADDRESS_FAMILY sin6_family;
USHORT sin6_port;
ULONG sin6_flowinfo;
IN6_ADDR sin6_addr;
union {
ULONG sin6_scope_id;
SCOPE_ID sin6_scope_struct;
};
} SOCKADDR_IN6, *PSOCKADDR_IN6;
这是这个结构,你的sin6_flowinfo有没有赋值?看你的代码好像没有赋值。
这是msdn中要求的:
All of the data in the SOCKADDR_IN6 structure, except for the address family, must be specified in network-byte-order (big-endian).除了family,剩下的都要指定