新手求教Windows下Socket 编程的有关问题

新手求教Windows下Socket 编程的问题
我用C语言写了一个很简单的服务器程序,但是报错,总是绑定错误~以下是源代码~请大虾们帮我诊断一下是什么问题?用的VS2005~工程为win32控制台空项目~C语言编写~
#include   <stdio.h>
#include   <winsock.h>

#pragma   comment   (lib, "ws2_32.lib ")

#define   SVR_PORT   (unsigned   short)3000
#define   CLN_PORT   (unsigned   short)4000

main()
{
        SOCKET   dwSvrSock;

        struct   sockaddr_in   tSvrAddr;
        struct   sockaddr_in   tClnAddr;
        unsigned   int   dwAddrLen   =   sizeof   (struct   sockaddr_in);

        fd_set   readfds;

        WORD   wVersionRequested;
        WSADATA   wsaData;

        int   rtn;
        char   recv[10];

        wVersionRequested   =   MAKEWORD(1,   1);

        rtn   =   WSAStartup(wVersionRequested,   &wsaData);
        if   (rtn   !=   0)
        {
                printf   ( "Socket   startup   error!\n ");
                return;
        }
        if   (LOBYTE(wsaData.wVersion)   !=   1   ||   HIBYTE(wsaData.wVersion)   !=   1)
        {
                printf   ( "Socket   Version   error!\n ");
                return;
        }

        dwSvrSock   =   socket(AF_INET,   SOCK_DGRAM,   0);
        if   (dwSvrSock   ==   INVALID_SOCKET)
        {      
                printf   ( "Socket   fail!\n ");
                return;
        }
        tSvrAddr.sin_family   =   AF_INET;
        tSvrAddr.sin_port   =   htons   (SVR_PORT);
        tSvrAddr.sin_addr.s_addr   =   inet_addr( "127.0.0.1 ");

        rtn   =   bind   (dwSvrSock,   (struct   sockaddr   *)&tSvrAddr,   dwAddrLen);
        if   (rtn   ==   0)
        {
                printf   ( "Bind   fail!\n ");
                closesocket(dwSvrSock);
                return;
        }

        while(1)
        {
                FD_ZERO(&readfds);
                FD_SET(dwSvrSock,   &readfds);

                rtn   =   select((int)dwSvrSock   +   1,   &readfds,   NULL,   NULL,   NULL);