MFC中Bind()总返回10022

一个最简单的tcp服务器端,关键代码如下

CDialog::OnInitDialog();
// TODO: Add extra initialization here
CSocket sockListen;
SOCKADDR_IN serverAddr;
serverAddr.sin_family=AF_INET;
serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
serverAddr.sin_port=htons(5802);

if(!sockListen.Create(5802))
{
    char szError[256] = {0};
    sprintf(szError, "create Faild: %d", GetLastError());
    AfxMessageBox(szError);
    return 1; 

}
if (!sockListen.Bind(5802,"127.0.0.1"))
    //或者用这种Bind方法
//if (!sockListen.Bind((SOCKADDR *)&serverAddr,sizeof(serverAddr)))
{
    char szError[256] = {0};
    sprintf(szError, "Bind Faild: %d", GetLastError());
    AfxMessageBox(szError);
    sockListen.Close();
    return 1; 
}

两种Bind方法都显示10022错误,Socket not bound, invalid address or listen is not invoked prior to accept.说是提供了无效的参数,也不知道哪里错了求大神帮帮忙

create和bind只需要一个地方给端口号