C++远程监控系统接收端- RevPlayMDIChildWnd.cpp

该代码段展示了如何在C++中接收组播数据,使用WSARecvFrom函数处理网络数据并进行错误检查。当接收失败时,会增加丢失块的计数并显示错误信息。此外,还包含了保存文件的逻辑,用户可以选择保存格式并指定文件名。
摘要由CSDN通过智能技术生成


int CRevPlayWnd::ReceiveData()
{//接收组播数据
    CString msg;
    int status;
    DWORD cbRet;
    DWORD dFlag;
    int iLen;
    SOCKADDR_IN stSrcAddr;
    cbRet = 0;
    iLen = sizeof (stSrcAddr);
    dFlag = 0;
    //接收组播数据,存放到缓冲区stWSABuf中
    status = WSARecvFrom (MultiSock, /* socket */
        &stWSABuf,               /* input buffer structure */
        1,                       /* buffer count */
        &cbRet,                  /* number of bytes recv'd */
        &dFlag,                 /* flags */
        (struct sockaddr *)&stSrcAddr,/* source address */
        &iLen,                   /* size of addr structure */
        NULL,                    /* overlapped structure */
        NULL);                   /* overlapped callback function */
    
    if (status == SOCKET_ERROR)
    {
        //数据丢失,丢失的块数计数加1
        m_LostBlock++;
        msg.Format ("WSARecvFrom() failed, Err:%d", WSAGetLastError());
        MessageBox (msg);
        return -1;
    }
    return cbRet;
}

void CRevPlayWnd::OnSave()
{
    // TODO: Add your command handler code here
    m_Save=!m_Save;
    DWORD dwFlags;
    CString SaveFileName;
    CString strSave;
    TCHAR Driver;
    CFileDialog dlg(TRUE,NULL,"temp.mpg",NULL,"mpeg文件(*.mpg)|*.mpg|AVI文件(*.avi)|*.avi");
    dlg.m_ofn.lpstrTitle="保存到...";
    if(dlg.DoModal()==IDOK)
    {
        
        SaveFileName=dlg.GetPathName();
        Driver=SaveFileName.GetAt(0);
           CWnd* pParent = GetOwner();
        strSave.Format("保存到:%s",SaveFileName);
        CMainFrame* pFrame=(CMainFrame*)pParent->GetOwner();
        //   pFrame->m_wndStatusBar.SetPaneText(1,strSave);
        
    }
    dwFlags = MMIO_CREATE | MMIO_WRITE;
    hmmioSave = mmioOpen(SaveFileName.GetBuffer(_MAX_PATH), (LPMMIOINFO)NULL, dwFlags);
    SaveFileName.ReleaseBuffer();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D20187

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值