一个很奇怪的问题

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);
}


我没发现有任何问题。谢谢各位帮帮忙啦,如果可以我把源程序发给您帮我看看
...全文
84 点赞 收藏 9
写回复
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
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告