一个很奇怪的问题

hyuga1232007 2009-08-15 03:42:37
我现在有个问题,就是在客户端的OnReceive函数里接收传输来的文件,从if(type == SEND_FILE)开始的整个内容都是传输文件操作,这段代码加入进去之前没有错误,加入之后再编译出现5个错误:
e:\改版程序\基于vc的tcp聊天(改版3+发送失去连接信息)\基于vc的tcp聊天(改版1)1\基于vc的tcp聊天6\基于vc的tcp聊天55\基于vc的tcp聊天\mychatdlg.h(24) : error C2629: unexpected 'class CMyChatDlg ('
e:\改版程序\基于vc的tcp聊天(改版3+发送失去连接信息)\基于vc的tcp聊天(改版1)1\基于vc的tcp聊天6\基于vc的tcp聊天55\基于vc的tcp聊天\mychatdlg.h(24) : error C2238: unexpected token(s) preceding ';'
e:\改版程序\基于vc的tcp聊天(改版3+发送失去连接信息)\基于vc的tcp聊天(改版1)1\基于vc的tcp聊天6\基于vc的tcp聊天55\基于vc的tcp聊天\mychatdlg.h(25) : error C2143: syntax error : missing ';' before '*'
e:\改版程序\基于vc的tcp聊天(改版3+发送失去连接信息)\基于vc的tcp聊天(改版1)1\基于vc的tcp聊天6\基于vc的tcp聊天55\基于vc的tcp聊天\mychatdlg.h(25) : error C2501: 'CClientSocket' : missing storage-class or type specifiers
e:\改版程序\基于vc的tcp聊天(改版3+发送失去连接信息)\基于vc的tcp聊天(改版1)1\基于vc的tcp聊天6\基于vc的tcp聊天55\基于vc的tcp聊天\mychatdlg.h(25) : error C2501: 'm_pSocket' : missing storage-class or type specifiers
。把这段传输文件的代码再删除了还是会出现这些错误(为什么变回原样还会有错误)。
下面是错误对应的地方:
CMyChatDlg(CClientSocket *p_Socket,CWnd* pParent = NULL); // standard constructor
CClientSocket *m_pSocket;

下面是源程序
void CClientSocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
char buff[sizeof(Header)];
memset(buff,0,sizeof(buff));
Receive(buff,sizeof(buff));

Header *header = (Header*)buff;
int length = header->len;
char type = header->type;

if(type == SEND_MESSAGE)
{
chatDlg->GetMessage();
}
if(type == LOGIN_IO)
{
chatDlg->UpdateUser();
}
if(type == SEND_DISCONNECT)
{
chatDlg->GetDisconnect();
}


if(type == SEND_FILE)
{
Receive((char*)&DataPacket,sizeof(DataPacket));
if(chatDlg->MessageBox("对方客户端发送文件给你,你是否接收?","提 问",MB_OKCANCEL|MB_ICONQUESTION)==IDOK)
{
FILE *fp;
CString filter="文本文件(*.txt)|*.txt|c++文件(*.h,*.cpp)|(*.h,*.cpp)|其他(*.*)|*.*||";
CFileDialog savedlg(FALSE,NULL,NULL,OFN_HIDEREADONLY,filter);
CString filename;
if(savedlg.DoModal()==IDOK)
filename=savedlg.GetPathName();
fp=fopen(filename,"w");
if(fp==NULL)
savedlg.MessageBox("不能保存文件");
for(int i=0;i<DataPacket.len;i++)
fputc(DataPacket.ffdata[i],fp);
fclose(fp);


char a[100];
itoa(DataPacket.len,a,10);

CEdit *p_Edit = (CEdit *)::AfxGetMainWnd()->GetDlgItem(IDC_EDIT_LIST);
CString strTemp="系统信息";
strTemp+=_T("\r\n");
strTemp+="接收到来自某客户的文件:";
strTemp+=DataPacket.name;
strTemp+=" 文件大小:";
strTemp+=a;
strTemp+=_T("\r\n");
strTemp+=" 保存于:";
strTemp+=filename;
strTemp+=_T("\r\n");
p_Edit->ReplaceSel(strTemp);
}


}





CSocket::OnReceive(nErrorCode);
}


我没发现有任何问题。谢谢各位帮帮忙啦,如果可以我把源程序发给您帮我看看
...全文
121 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cpp权哥 2009-08-16
  • 打赏
  • 举报
回复
看看是不是你改过CClientSocket类的头文件,是不是把末尾的}或者;弄丢了。
  • 打赏
  • 举报
回复
学习
cxiaobao 2009-08-15
  • 打赏
  • 举报
回复
头文件包含顺序的问题,整理一下你的文件包含关系
flyskytoday 2009-08-15
  • 打赏
  • 举报
回复
不说是可以发程序吗?

从你的这段程序中几本上看不出有什么错误

[把这段传输文件的代码再删除了还是会出现这些错误(为什么变回原样还会有错误)。]
这句看,那你应该选择,全部编译

if(savedlg.DoModal()==IDOK)
filename=savedlg.GetPathName();
这些,都没有加取消判断
MoXiaoRab 2009-08-15
  • 打赏
  • 举报
回复
CMyChatDlg这个类的头文件没有包含?
vchell 2009-08-15
  • 打赏
  • 举报
回复
应该是头文件有问题
WaistCoatX 2009-08-15
  • 打赏
  • 举报
回复
为啥用中文路径啊,看着晕
见习学术士 2009-08-15
  • 打赏
  • 举报
回复
依我看就是
mychatdlg.h
里有语法错误了,如果你觉得没问题(还原还出错),你可以rebuild all看看。
flyskytoday 2009-08-15
  • 打赏
  • 举报
回复
发我看看,,,

flyskytoday
@
hotmail.com

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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