如果我发送的数据比较多,那么我在用sendto时,可不可以先将那些char类型的东西放到一个堆struct里面,然后在发送这个堆过去呢,这样服务端能不能接受到正确地数据呢???

解决方案 »

  1.   

    传输的时候要把struct—>char*
    收到的时候再解析
      

  2.   


            struct LANDDATA {
            char username[20];
            char password[20];
            };        LANDDATA* recvBuf=new LANDDATA;
    memset(recvBuf,0,sizeof(&recvBuf));        while(1)
    {
    retval=recvfrom(sock,(char*)recvBuf,sizeof(&recvBuf)+1,0,(SOCKADDR*)&addrFrom,&len);
    if(retval==SOCKET_ERROR)
    {
    CString str;
    str.Format(L"%d",::GetLastError());
    AfxMessageBox(L"错啦 "+str);
    break;
    }
    ::PostMessage(hWnd,WM_RECVDATA,0,(LPARAM)recvBuf);
    }        LRESULT CServerDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
            {
            CString strUserName,strPassword;         strUserName.Format(L"%s",((LANDDATA*)lParam)->username);
            strPassword.Format(L"%s",((LANDDATA*)lParam)->password);
            AfxMessageBox(strUserName+strPassword);         GetDlgItem(IDC_LIST_GROUPS)->SetWindowTextW(strUserName+strPassword);         return 0;
            }
    这是我写的接收端的部分代码,有错吗??请指教,谢谢!!!