c++socket客户端数据接收问题

本人刚接触这个东西,水平较低,在测试上位机客户端是否可以接受数据时,出现些问题,下位机发送的数据是ff,上位机接收的情况如图,会出现乱码,还有就是数据显示的很慢,最重要的是还需要不断抽拔与WiFi模块RX接口相连的线才能有数据显示,不知道是什么原因,程序是在网上找的socket客户端的程序,请大神们帮看一下,这个问题折磨我很久了,万分感谢。图片说明

把服务端和客户端的代码贴出来吧

客户端代码
#include
#include
#include
#include
#include
using namespace std;
#pragma comment (lib, "WS2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;//加载套接字库,创建套接字
int err;

wVersionRequested = MAKEWORD( 1,1);

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
    return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
    HIBYTE( wsaData.wVersion ) != 1 ) {
        WSACleanup( );
        return;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);//TCP 构建通讯socket,流式socket

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.1.102");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(2001);
//connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//向服务器发送连接请求
if (0 != connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)))
{
    std::cout << "连接服务器失败\n";

}
//send(sockClient,"hello",strlen("hello")+1,0);//和服务器进行通信
char recvBuf[500]={0};
int nLen;
while (1)
{
    std::cout<<"C617";
    /*recv(sockClient,recvBuf,500,0);0
    printf("%s\n",recvBuf);*/
    nLen=recv(sockClient,recvBuf,1,0);
std::cout<<"nLen= "<<nLen<<endl;    
    //std::cout<<"C617"<<std::endl;
    //recvBuf[nLen-1] = '\0';
    printf("%x\n",recvBuf[0]);
    //cout<<recvBuf[2]<<endl;
    /*if (nLen>0)
    {
    recvBuf[nLen-1] = '\0';
    printf("%s\n",recvBuf);
    }*/

}
closesocket(sockClient);//关闭套接字,关闭加载套接字库
WSACleanup();
system("pause");

}
服务器代码(这个代码是不是也需要和客户端代码一样按照socket步骤写代码呢,我没有用)
void send_data(void)
{
if(DataSend_refresh.act) //如果需要传输数据
{
// TX_data[1]=(uint8)robot_macdata.speed_leftback;
// TX_data[2]=(uint8)(robot_macdata.speed_leftback>>8);
// TX_data[3]=(uint8)robot_macdata.speed_leftfront;;
// TX_data[4]=(uint8)(robot_macdata.speed_leftfront>>8);
// TX_data[5]=(uint8)robot_macdata.speed_rightfront;
// TX_data[6]=(uint8)(robot_macdata.speed_rightfront>>8);
// TX_data[7]=(uint8)robot_macdata.speed_rightback;
// TX_data[8]=(uint8)(robot_macdata.speed_rightback>>8);

//我修改 
TX_data[1]=0xff;
TX_data[2]=0xff;
TX_data[3]=0xff;
TX_data[4]=0xff;
TX_data[5]=0xff;
TX_data[6]=0xff;
TX_data[7]=0xff;
TX_data[8]=0xff;    

// U_send angle;
// angle.float_data=robot_data.angle;
// angle.uint32_data=time_line;
//
/*******************将数据放置缓冲区**************************
TX_data[1]=(uint8)sample_data.acce_value;
TX_data[2]=(uint8)(sample_data.acce_value>>8);
TX_data[3]=(uint8)sample_data.gyro_bf_value;
TX_data[4]=(uint8)(sample_data.gyro_bf_value>>8);
TX_data[5]=(uint8)sample_data.gyro_lr_value;
TX_data[6]=(uint8)(sample_data.gyro_lr_value>>8);
TX_data[1]=(uint8)((int16)(robot_data.angle*10000));
TX_data[2]=(uint8)(((int16)(robot_data.angle*10000))>>8);
TX_data[3]=(uint8)((int16)(gyro_d_angle*10000));
TX_data[4]=(uint8)(((int16)(gyro_d_angle*10000))>>8);
TX_data[1]=(uint8)robot_data.left_speed;
TX_data[2]=(uint8)(robot_data.left_speed>>8);
TX_data[3]=(uint8)robot_data.right_speed;
TX_data[4]=(uint8)(robot_data.right_speed>>8);
TX_data[3]=(uint8)time_line;
TX_data[4]=(uint8)(time_line>>8);
TX_data[5]=(uint8)((int16)(robot_data.d_angle_bf*10000));
TX_data[6]=(uint8)(((int16)(robot_data.d_angle_bf*10000))>>8);
TX_data[3]=(uint8)((int16)(acce_angle*10000));
TX_data[4]=(uint8)(((int16)(acce_angle*10000))>>8);
TX_data[3]=(uint8)((int16)(gyro_d_angle*10000));
TX_data[4]=(uint8)(((int16)(gyro_d_angle*10000))>>8);
TX_data[5]=angle.uint8_data[0];
TX_data[6]=angle.uint8_data[1];
TX_data[7]=angle.uint8_data[2];
TX_data[8]=angle.uint8_data[3];
******************/

    if(USART_GetFlagStatus(UART_SELECT,USART_FLAG_TC))  //如果发送完成
        {
            USART_DMACmd(UART_SELECT, USART_DMAReq_Tx, ENABLE);  //使能UART发送的DMA请求
            DataSend_refresh.act=0;
        }
}   

}