xiaohuli1 2013-11-28 06:05 采纳率: 50%
浏览 2569

应用程序发生异常unknow software exception(0x80000003)还有degug assertion failed.

TCP大量数据接收时出现“应用程序发生异常unknow software exception(0x80000003),位置为0x7c92120e”还有degug assertion failed.实在找不到错误,各位前辈帮我看看吧

//客户端线程
DWORD WINAPI CTCPSocket::ClientThread(LPVOID lpParameter)
{
CTCPSocket* m_pTCP=(CTCPSocket*)lpParameter;

int nRet;
char buf[500*1024];

timeval tv={0,5000};
fd_set fs;

//不断接收服务器发来数据
while(m_pTCP->m_bAuto)
{
    FD_ZERO(&fs);
    FD_SET(m_pTCP->m_sSocket,&fs);
    if(select(1,&fs,NULL,NULL,&tv)==1)
    {
        nRet=recv(m_pTCP->m_sSocket,buf,500*1024,0);
        if(nRet==SOCKET_ERROR)
        {
            //出错断开(例如服务器关闭)
            m_pTCP->error=WSAGetLastError();
            closesocket(m_pTCP->m_sSocket);
            m_pTCP->m_bAuto=FALSE;
            TRACE("客户端出错断开! \n");

            //回调处理
            if(m_pTCP->m_lpClientStatusProc!=NULL)
            {
                char inf[21];                   
                m_pTCP->m_lpClientStatusProc(inf,21,m_pTCP->m_dwUserData);
            }

            break;
        }

        if(nRet>0)
        {
            //收到新的数据
            TRACE("客户端收到数据%d字节! \n",nRet);

            //数据回调处理
            if(m_pTCP->m_lpClientDataArriveProc!=NULL)
            {

                m_pTCP->m_lpClientDataArriveProc(buf,nRet,m_pTCP->m_dwUserData);

            }

            continue;
        }

        if(nRet==0)
        {
            //服务器正常断开
            TRACE("客户端正常断开! \n");

            //回调处理
            if(m_pTCP->m_lpClientStatusProc!=NULL)
            {
                char inf[21];                               
                m_pTCP->m_lpClientStatusProc(inf,21,m_pTCP->m_dwUserData);

            }
            closesocket(m_pTCP->m_sSocket);
            m_pTCP->m_bAuto=FALSE;

            break;
        }
    }
}

return 0;

}

dlg.cpp中
void CSICKDlg::OnDataArrived(char *data,int length,DWORD userdata)
{
CSICKDlg *pWnd=(CSICKDlg *)userdata;
::SendMessage(pWnd->m_hWnd,WM_DATA_ARRIVED,(WPARAM)data,LPARAM(length));
}

LONG CSICKDlg::OnDataArrivedMsg(char *datamiddlebuf,LPARAM lParam)
{
//处理收到的数据
writethreadInfo writeInfo;
writeInfo.m_writeflag=true;
writeInfo.writebuf=datamiddlebuf;
writeInfo.writedatalength=lParam;
CWinThread *pWrite=AfxBeginThread(Write,&writeInfo,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);
pWrite->ResumeThread();//创建线程

return 0;

}
UINT CSICKDlg::Write(LPVOID pParam)
{
writethreadInfo* pInfo=(writethreadInfo*)pParam;

int len=pInfo->writedatalength;
    char *write=pInfo->writebuf;
bool flag=pInfo->m_writeflag;
int i;
char binstr[500*1024];
if(flag)
{
    sprintf(binstr,"%02x",write[0]);
    for (i=1;i<len;i++)
    {
        sprintf(binstr,"%s %02x",binstr,(unsigned char)write[i]);

    }
    printf("%s",binstr);
    CString Cwrite=binstr;
    sickFile.Seek(0,CFile::end);
    sickFile.WriteString(Cwrite);
    flag=false;

}

return 0;
}
帮帮我吧,新手实在找不到哪里出错了。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥35 平滑拟合曲线该如何生成
    • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
    • ¥15 名为“Product”的列已属于此 DataTable
    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集