关于网络编程的看下哪里出问题

这个服务器程序连接客户端后就一直显示接受失败,这是为什么?
服务器代码

#include "windows.h"
#include "iostream"
#include "process.h"
#include "iostream"
#include <string>
#pragma comment(lib, "WS2_32.lib")

SOCKADDR_IN ServerAdd;//服务器地址信息结构
SOCKADDR_IN ClientAdd;//客户端地址信息结构
SOCKET ClientServer;

void Receive(void* Param)
{
    while (1)
    {
        SOCKET revSocketClient = *(SOCKET*)(Param);
        char RecBuf[2048] = {};
        if (recv(revSocketClient, RecBuf, 2048, 0) == SOCKET_ERROR)
        {
            printf("接收数据失败!\n");
        }
        else
        {
            printf("客户端:%s\n", RecBuf);
        }
    }
}
void Send(void* param)
{
    while (1)
    {
        //客户端发送数据给服务器
        SOCKET clientSocket = *(SOCKET*)(param);
        char RecBuf[2048] = {};        //发送缓冲区
        std::cin.getline(RecBuf, 2048);
        if (send(clientSocket, RecBuf, strlen(RecBuf), 0) == SOCKET_ERROR)
        {
            printf("发送数据失败!\n");
        }
        else
        {
            printf("自己说:%s\n", RecBuf);
        }
    }
}

void Load()//加载模块
{
    printf("服务器\n");
    printf("Loading...\n");
    printf("消息:\n");

    /*------------------------- 初始化套接字库 --------------------------*/

    WSADATA wsaData;                                                    //WSA的数据
    WORD VersionRequested = MAKEWORD(2, 2);                             //请求的版本

    if (WSAStartup(VersionRequested, &wsaData) != 0)                    //判断加载套接字节是否失败
    {
        printf("初始化套接字节失败!\n");
        exit(1);                                                        //结束程序
    }
    else
    {
        printf("初始化套接字节成功!\n");
    }

    if ((ClientServer = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR)
    {
        printf("套接字创建失败!\n");
        exit(1);
    }
    else
    {
        printf("套接字创建成功!\n");
    }

    if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)  //判断请求加载的版本号是否符合要求
    {
        WSACleanup();                                                    //不符合 关闭套接字库       
        exit(1);                                                         //关闭程序
    }

    /*-------------------------- 设置连接地址 --------------------------*/

    ServerAdd.sin_family = AF_INET;                      //地址族
    ServerAdd.sin_addr.S_un.S_addr = htonl(INADDR_ANY);  //主机地址
    ServerAdd.sin_port = htons(5000);                    //端口号

    /*--------------------------- 创建套接字 ---------------------------*/

    ClientServer = socket(AF_INET, SOCK_STREAM, NULL);  //AF_INET 表示指定的地址族 SOCK_STREAM 表示流式套接字TCP

    /*---------------------- 绑定套接字到本地接口 ----------------------*/

    if (bind(ClientServer, (SOCKADDR*)&ServerAdd, sizeof(SOCKADDR)) == SOCKET_ERROR)
    {
        printf("绑定失败!\n");
        exit(1);
    }
    else
    {
        printf("绑定成功!\n");
    }

    /*--------------------- 设置套接字为监听状态 -----------------------*/

    if (listen(ClientServer, SOMAXCONN) == SOCKET_ERROR)
    {
        printf("坚听失败!");
        exit(1);
    }
    else
    {
        printf("监听功能成功开启!正在监听:\n");
    }

    /*---------------------------- 接受连接 ----------------------------*/

    int AddLen = sizeof(SOCKADDR);

    if (accept(ClientServer, (SOCKADDR*)&ClientAdd, &AddLen)==SOCKET_ERROR)
    {
        printf("接受连接失败!");
        exit(1);
    }
    else
    {
        printf("与客户端连接成功!按任意键进入聊天服务");
    }
}
void Chat()
{
    _beginthread(&Receive, 0, &ClientServer);
    _beginthread(&Send, 0, &ClientServer);
    while (1);
}
int main()
{
    Load();
    Chat();
    WSACleanup();
}

这是客户端代码

#include "windows.h"
#include "iostream"
#include "process.h"
#include <string>
using namespace std;
#pragma comment(lib, "ws2_32.lib")

void Receive(void* param)
{
    while (1)
    {
        //客户端接受来自服务器的数据
        SOCKET clientSocket = *(SOCKET*)(param);
        char  RecBuf[2048] = {};        //接收缓冲区
        if (recv(clientSocket, RecBuf, 2048, 0) == SOCKET_ERROR)
        {
            cout << "数据接受失败" << endl;
        }
        else
        {
            printf("服务器说:%s\n", RecBuf);
        }
    }
}

void Send(void* param)
{
    while (1)
    {
        //客户端发送数据给服务器
        SOCKET clientSocket = *(SOCKET*)(param);
        char RecBuf[2048] = {};        //发送缓冲区
        cin.getline(RecBuf, 2048);
        if (send(clientSocket, RecBuf, strlen(RecBuf), 0) == SOCKET_ERROR)
        {
            cout << "发送消息失败!";
        }
        else
        {
            printf("自己说:%s\n", RecBuf);
        }
    }
}

int main()
{
    printf("客户端\n");
    printf("Loading...\n");
    printf("消息:\n");
    WSADATA  wsa;
    if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
    {
        cout << "套接字初始化失败!" << endl;
    }
    else
    {
        printf("初始化套接字节成功!\n");
    }
    SOCKET clientSocket;
    if ((clientSocket = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR)
    {
        cout << "套接字创建失败!" << endl;
    }
    struct sockaddr_in SeverAddress;        //服务器地址 也就是即将要连接的目标地址
    memset(&SeverAddress, 0, sizeof(sockaddr_in));
    SeverAddress.sin_family = AF_INET;
    SeverAddress.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");  //127.0.0.1表示本机ip地址
    SeverAddress.sin_port = htons(5000);//设定端口号

    //开始连接
    if (connect(clientSocket, (sockaddr*)&SeverAddress, sizeof(SeverAddress)) == SOCKET_ERROR)
    {
        cout << "客户端:和服务器连接失败!" << endl;
        return 0;
    }
    else
        cout << "与服务器连接成功!" << endl;

    //创建两个子线程
    _beginthread(Receive, 0, &clientSocket);
    _beginthread(Send, 0, &clientSocket);

    Sleep(INFINITE);    //这里采用另外一种技术避免主线程执行完退出——使其无限期休眠
    //    关闭socket
    if (clientSocket != INVALID_SOCKET) {
        closesocket(clientSocket);
        clientSocket = INVALID_SOCKET;
    }
       while(1);
    //    终止
    WSACleanup();
    cout << "客户端退出!" << endl;
    return 0;
}


看下哪出了问题,谢谢

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^