0xC000005 kernel32.dll问题 一个奇怪的问题。

warmyellow 2009-04-11 04:27:50
SendFile函数 网络上传文件:
void SendFile(CSocket& getsocket,CFile &hf){
int size=hf.GetLength()/1024;
for(int i=0;i<size;i++){
char temp[1024]={0};
hf.Read(temp,1024);
getsocket.Send(temp, 1024);
hf.Seek(1024*(i+1),CFile::begin);
}
char newtemp[1024]={0};
hf.Read(newtemp,1024);
getsocket.Send(newtemp,1024);
AfxMessageBox(_T(newtemp));
}


CTimeOutSocket sockServer;
if(!AfxSocketInit()){
MessageBox(_T("套接字初始化问题!"),_T("内部错误"));
return;
}
if(!sockServer.Create()){
MessageBox(_T("套接字创建出现问题!"),_T("内部错误"));
return;
}
if(!sockServer.SetTimeOut(50000000)){
MessageBox(_T("超时设置失败!"),_T("内部错误"));
};
CFile hf;
CFileException fe;
char* pFileName = "C:\\avgfaceimage.xml";
if(!hf.Open(pFileName, CFile::modeRead, &fe))
{
MessageBox(_T("系统文件读取故障!"),_T("内部错误"));
return;
}
if(sockServer.Connect("127.0.0.1",1000)){
char szRecValue[1024] = {0};
CString strfirst;
DWORD filelength=hf.GetLength();
strfirst.Format("#Size#%d#",filelength);
sockServer.Send(strfirst, 24);
sockServer.Receive((void *)szRecValue, 1024);
strfirst=_T(szRecValue);
int size=filelength/1024;
if(strfirst==_T("#Ready#")){
SendFile(sockServer,hf);//去掉这个函数一下面一样被注释的代码代替就不会出错
// for(int i=0;i<size;i++){
// char temp[1024]={0};
// hf.Read(temp,1024);
// sockServer.Send(temp, 1024);
// hf.Seek(1024*(i+1),CFile::begin);
// }
// char newtemp[1024]={0};
// hf.Read(newtemp,1024);
// sockServer.Send(newtemp,1024);

char returnmsg[50]={0};
sockServer.Receive(returnmsg,1024);
CString msgstr=_T(returnmsg);
CString finalstr;
if(sockServer.IsTimeOut()){
sockServer.SetIsTimeOut(false);
MessageBox(_T("传输超时,请重传!"),_T("内部错误"));
return;
}
if(AfxExtractSubString(finalstr,msgstr,1,'#')){
if(finalstr==_T("Success")){
char res[1024]={0};
sockServer.Receive(res,1024);
finalstr=_T(res);
CString comt[2];
int filesize;
CFile wf;
CFileException we;
char* pFileName = "C:\\avg.txt";
if(!wf.Open(pFileName, CFile::modeCreate|CFile::modeWrite, &we))
{
AfxMessageBox(_T("内部错误!"));
return;
}
if(AfxExtractSubString(comt[0],finalstr,1,'#')){
if(comt[0]==_T("Size")){
if(AfxExtractSubString(comt[1],finalstr,2,'#')){
filesize=atoi(comt[1]);
sockServer.Send("#Ready#",1024);
ReceiveFile(sockServer,filesize,wf);
/* int size=filesize/1024;
//AfxMessageBox(_T("这里被执行了!"));
for(int i=0;i<size;i++){
char temp[1024]={0};
sockServer.Receive(temp, 1024);
wf.Write(temp,1024);
wf.Seek(1024*(i+1),CFile::begin);
}
char newtemp[1024]={0};
sockServer.Receive(newtemp,1024);
CString laststr;
laststr=_T(newtemp);
MessageBox(laststr);
wf.Write(laststr,laststr.GetLength());
*/ char xtemp[1024]={0};
CString laststr;
sockServer.Receive(xtemp,1024);
CString xlaststr=_T(xtemp);
if(AfxExtractSubString(laststr,xlaststr,1,'#')){
if(laststr==_T("Success")){
if(IDOK==MessageBox(_T("是否确认本次考勤!"),_T("提示"),MB_YESNO)){
sockServer.Send("#Certain#",100);
}else{
sockServer.Send("#Cancel#",100);
}
}else{
MessageBox(_T("不可靠网络传输"),_T("外部错误"));
return;
}
}else{
MessageBox(_T("不可靠网络传输"),_T("外部错误"));
return;
}
}else{
MessageBox(_T("不可靠网络传输"),_T("外部错误"));
return;
}
}else{
MessageBox(_T("不可靠网络传输!"),_T("外部错误"));
return;
}
}else{
MessageBox(_T("不可靠网络传输!"),_T("外部错误"));
return;
}
}else{
MessageBox(_T("服务器接收数据失败"),_T("外部错误"));
return;
}
}else{
MessageBox(_T("网络连接丢失,请重新连接"),_T("外部错误"));
return;
}
}else{
MessageBox(_T("网络连接失败请重新发送!"),_T("外部错误"));
return;
}

}else{
MessageBox(_T("无法连接服务器请重试!"),_T("外部错误"));
return;
}
if(!sockServer.KillTimeOut()){
MessageBox(_T("关闭超时失败!"),_T("内部错误"));
};
sockServer.Close();

红色部分用SendFile()函数代替就这个函数就会出现问题:
Unhandled exception in xxx.exe:Kernel32.dll:0Xc000005 access viloation
但是不是在调用SendFile()时出错而且好像SendFIle的代码是正常执行了的 是在后面其他地方突然跳出
当然如果不要SendFile()函数用SendFile里面的代码直接代替SendFIle()函数调用的化 就不会有问题.
看有没有人你解决。
...全文
272 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
warmyellow 2009-04-11
  • 打赏
  • 举报
回复
怎么没人 再次UP
warmyellow 2009-04-11
  • 打赏
  • 举报
回复
自己up
warmyellow 2009-04-11
  • 打赏
  • 举报
回复
First-chance exception in TestClient.exe (KERNEL32.DLL): 0xC0000005: Access Violation.
内容概要:本文档围绕“光伏并网逆变器序阻抗建模、扫频辨识与弱电网交互稳定性分析”展开,提供基于Matlab和Simulink的完整代码与仿真模型,复现了相关博士论文的核心研究成果。内容聚焦于新能源发电系统接入弱电网时的稳定性问题,系统阐述了光伏逆变器的正负序阻抗建模方法、小信号扫频辨识技术、锁相环与电流环的动态耦合效应、LCL滤波器的作用机制以及系统宽频带振荡的失稳机理。通过构建精确的序阻抗模型并结合扫频法进行稳定性判据分析,深入揭示并网逆变器与弱电网间的交互特性,为实际工程中振荡问题的预测、诊断与抑制提供坚实的理论支撑与有效的技术路径。; 适合人群:具备电力电子、自动控制理论及新能源发电系统基础知识,正在从事相关领域研究的硕士/博士研究生、高校科研人员以及电力系统行业的工程师。; 使用场景及目标:①复现并验证博士论文中关于光伏逆变器序阻抗建模与弱电网交互稳定性的关键结论;②作为科研项目或学位论文的技术蓝本,开展弱电网环境下并网系统稳定性仿真与机理研究;③深入掌握Matlab/Simulink在电力系统小信号稳定性分析、特别是阻抗建模与扫频法应用方面的高级仿真技能。; 阅读建议:学习者应结合所提供的Matlab代码与Simulink仿真模型,亲手运行并调试扫频辨识程序,细致分析序阻抗建模的每一步推导与实现过程,重点关注锁相环动态特性对系统稳定裕度的影响,通过调整控制器参数与电网强度观察系统响应变化,从而深刻理解交互失稳的内在机理,实现从理论到实践的融会贯通。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧