抓包工具已经看到数据到本机,但是recvfrom 读不到数据的有关问题

抓包工具已经看到数据到本机,但是recvfrom 读不到数据的问题?
C/C++ code

#include "stdafx.h"
#include <WinSock2.h>
#include <MSWSock.h>
#pragma comment(lib, "ws2_32.lib")
#include <list>
#include <vector>
#include <string>
#include <iostream>

DWORD WINAPI EchoProc(LPVOID pVoid)
{
    SOCKET ReceivingSocket = (SOCKET)pVoid;
    char szRecvBuf[8193]={0};
    sockaddr_in SenderAddr;
    int nAddrLen   =   sizeof(SenderAddr); 
    int nRecvdBytes = 0;
    int Ret = 0;
    while(true) 
    { 
        if((nRecvdBytes   =   recvfrom(ReceivingSocket,   szRecvBuf,   8192,   0,   (sockaddr*)&SenderAddr,   &nAddrLen))   ==   SOCKET_ERROR) 
        { 
            cout<<"ERROR:   recvfrom   failed   with   error:   " <<WSAGetLastError() <<endl; 
            break; 
        } 
        else
        {
            szRecvBuf[nRecvdBytes] = 0;
            cout<<szRecvBuf<<endl;
        }
        
        Ret   =   sendto(ReceivingSocket,   szRecvBuf,   nRecvdBytes,   0,   (SOCKADDR   *)&SenderAddr,   nAddrLen); 
        if(SOCKET_ERROR   ==   Ret) 
        { 
            cout<<"ERROR:   sendto   failed   with   error:   " <<WSAGetLastError() <<endl;         
            break; 
        } 
    }     
    
    closesocket(ReceivingSocket); 
    WSACleanup(); 
    
    return 0;
}


DWORD WINAPI RecvProc(LPVOID pVoid)
{
    SOCKET ReceivingSocket = (SOCKET)pVoid;
    char szRecvBuf[8193]={0};
    sockaddr_in SenderAddr;
    int nAddrLen   =   sizeof(SenderAddr); 
    int nRecvdBytes = 0;
    int Ret = 0;
    while(true) 
    { 
        if((nRecvdBytes   =   recvfrom(ReceivingSocket,   szRecvBuf,   8192,   0,   (sockaddr*)&SenderAddr,   &nAddrLen))   ==   SOCKET_ERROR) 
        { 
            cout<<"ERROR:   recvfrom   failed   with   error:   " <<WSAGetLastError() <<endl; 
            break; 
        } 
        else
        {
            szRecvBuf[nRecvdBytes] = 0;
            cout<<szRecvBuf<<endl;
        }         
    }     
    
    closesocket(ReceivingSocket); 
    WSACleanup(); 
    
    return 0;
}


SOCKET sock = INVALID_SOCKET;
int main(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;
    
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2,2), &wsaData);
    sockaddr_in sockaddr;
    sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    BOOL   bNewBehavior   =   FALSE;   
    DWORD   dwBytesReturned; 
    WSAIoctl(sock,   SIO_UDP_CONNRESET,   &bNewBehavior,   sizeof   bNewBehavior,   NULL,   0,   &dwBytesReturned,   NULL,   NULL);
    
    int mode = 0;
SELECT_MODE:
    cout << "输入模式:0服务端 1客户端" << endl;
    cin>>mode;
    if (mode == 0)
    {
        int port = 0;
        cout << "输入监听端口" << endl;
        cin>>port;
        
        sockaddr.sin_family = AF_INET;
        sockaddr.sin_port = htons(port);
        sockaddr.sin_addr.S_un.S_addr = htons(INADDR_ANY);
        
        if(bind(sock, (SOCKADDR*)&sockaddr, sizeof(sockaddr)) != SOCKET_ERROR)
        {                
            HANDLE hThread = CreateThread(NULL, 0, EchoProc, (void*)sock, 0, NULL);
            char q = 0;
            while (true)
            {
                cout<<"press q to quit"<<endl;
                cin>>q;
                if (q == 'q')
                {
                    closesocket(sock);
                    WaitForSingleObject(hThread, INFINITE);
                    CloseHandle(hThread);
                    break;
                }
            }
        }
        
    }
    else if (mode == 1)
    {
        string ip;
        int port = 0;
        sockaddr_in addr;
        addr.sin_family = AF_INET;
SELECT_IP:
        cout << "输入服务IP" << endl;
        cin>>ip;
        PHOSTENT phost = gethostbyname(ip.c_str());
        if (phost == NULL)
        {
            goto SELECT_IP;
        }
        else
        {
            addr.sin_addr.S_un.S_addr = *(u_long *) phost->h_addr_list[0];; //inet_addr(ip.c_str());
        }
        
        cout<<"输入端口"<<endl;
        cin>>port;
        addr.sin_port = htons(port);
        
        cout<<"输入要发送的数据"<<endl;
        
        
        sockaddr_in bind;
        bind.sin_addr.S_un.S_addr = htons(INADDR_ANY);
        bind.sin_port = htons(port-1);
        bind.sin_family = AF_INET;
        ::bind(sock, (SOCKADDR*)&bind, sizeof(bind));
        
        HANDLE hThread = CreateThread(NULL, 0, RecvProc, (void*)sock, 0, NULL);
        
        char q = 0;
        cout<<"press q to quit"<<endl;
        while (true)
        {
            string buffer;
            cin>>buffer;
            int sendResult = sendto(sock, buffer.c_str(), buffer.size(), 0, (SOCKADDR*)&addr, sizeof(addr));
            
            cin>>q;
            if (q == 'q')
            {
                closesocket(sock);
                WaitForSingleObject(hThread, INFINITE);
                CloseHandle(hThread);
                break;
            }                
        }
        
    }
    else
    {
        cout << "输入正确的的模式" << endl;
        goto SELECT_MODE;
    }
    
    
    return nRetCode;
}