MFC写的套接字文件传输程序只能传输txt和html格式的文件,请问可能的问题有哪些?

来源:百度知道 编辑:UC知道 时间:2024/05/27 00:54:12
TRACE("%s\n",m_dlg->m_NeedTransferFiles[i]);
CFile file(m_dlg->m_NeedTransferFiles[i],CFile::modeRead|CFile::shareDenyWrite);
m_dlg->SetWindowText("正在传输"+m_dlg->m_NeedTransferFiles[i]);
byte *buffer=NULL;
long count=file.GetLength();
buffer= new byte[count];
file.Read(buffer,count);
m.m_iCommand=2;
m.m_strText=buffer;
m_dlg->m_TransferSocket.SendMessage(&m);
m_dlg->SetWindowText(m_dlg->m_NeedTransferFiles[i]+"传输完毕!");
file.Close();
我找了一个用MFC写的的完整程序,传输文件的部分主要就是上述代码,可是我运行的时候Word文件就是传不对,几K的内容传过来只有几个乱码,会不会是编码的问题?

m是定义的一个消息类的实例,继承自CObject,m_strText是CString类型的成员变量,为什么不能用它来接收缓冲区的内容?请教了!我是个新手

你的代码里面m是什么东东
m.m_strText=buffer;
这句会产生什么后果,如果m_strText是CString类的话,把它去“=”一个BYTE缓冲区结果是不可预测的。
----
CString类只能接受字符串,而字符串是以0x00为结束标志的,你把一个BYTE缓冲区给它,它看到0x00就会认为缓冲区结束了,当然就不对了,因为一个二进制文件读取出来的缓冲区什么东西都可能有。
你的代码具体是否能够传任意文件和TransferSocket与那个m的类有关,如果它们的实现就只能用于传递m里面保存的那个CString成员,也就只能传文本类型数据。

听谁说的只能传那两种文件,文件用2进制流的方式读进缓冲区再发送,什么文件都能传输。

CSocket和CSocketFile,串行化操作,什么都能传~