ipv6套接字绑定异常,求大神.

ipv6套接字绑定错误,求大神......
C/C++ code

#include<stdio.h>
#include<winsock2.h>
#include<ws2tcpip.h>

//在编译采用了WINSOCK2.H的应用程序时,需要链接到WS2_32.LIB库  
#pragma comment(lib, "WS2_32.LIB")  

int main(int argc, char* argv[])
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    wVersionRequested = MAKEWORD(1, 1);
    err = WSAStartup(wVersionRequested,  &wsaData);
    if (err != 0) {
        printf("WSAStartup failed.\n");
        system("pause");
        return -1;
    }

    if (LOBYTE(wsaData.wVersion) != 1||
        HIBYTE(wsaData.wVersion) != 1) {
            WSACleanup();
            printf("LOBYTE or HIBYTE failed.\n");
            system("pause");
            return -2;
    }

    //创建套接字//
    addrinfo hints;
    addrinfo *res;
    memset(&hints, 0, sizeof(hints));
    hints.ai_family=AF_INET6;
    //hints.ai_family        = PF_INET6;
    hints.ai_socktype    = SOCK_DGRAM;
    hints.ai_protocol    = IPPROTO_UDP;
    hints.ai_flags        = AI_NUMERICHOST;
    getaddrinfo("fe80::706d:5cb0:fcac:7141", "7999", &hints, &res);
    //getaddrinfo(NULL, "8700", &hints, &res);
    SOCKET s;
    s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
    if(s == INVALID_SOCKET)
    {
        WSACleanup();
        printf("Create socket failed.\n");
        system("pause");
        return -3;
    }

    //绑定套接口
    err = bind(s, res->ai_addr, res->ai_addrlen);
    if(err == SOCKET_ERROR)
    {
        WSACleanup();
        printf("Bind socket failed.\n");
        system("pause");
        return -4;
    }

    //发送消息
    char buf[]="Hello, my name is zhcosin.";
    err = sendto(s, buf, strlen(buf), 0, res->ai_addr, res->ai_addrlen);
    if(err == SOCKET_ERROR)
    {
        WSACleanup();
        printf("Send failed.\n");
        system("pause");
        return -5;
    }

    closesocket(s);

    system("pause");
}


编译没问题,运行的时候进入到了套接字绑定错误处理的那部分代码了,求帮助啊
运行输出如下:
Bind socket failed.
Press any key to continue......

------解决方案--------------------
服务端要用 AI_PASSIVE
hints.ai_flags = AI_PASSIVE