我不知道怎么用BYTE类型的设置包头包尾。
这是发送端:是我点击按钮的时候触发的;
file.Open(m_strSendpath,CFile::modeRead | CFile::typeBinary;
char *lpBuf = new char[4096];
memset(lpBuf,0,4096);
while (1)
{
nLen = file.Read(lpBuf,4096); if (nLen == 0)
{
break;
}
if (m_nRadio == 0)
{
nSend = m_ClientSocket.Send(lpBuf,nLen);  //GetLength 返回字符的个数
}
else if (m_nRadio == 1)
{
nSend = m_ServerSocket.m_pClientSocket->Send(lpBuf,nLen);
}
nEnd += nSend;
if (nLen > 0)
{
file.Seek(nEnd,CFile::begin);
}
}接收端是在Onreceive里触发的,接收端是这样的:
while (1)
{
if (m_pBuf != NULL )
{
delete []m_pBuf;
}
m_pBuf = new char [4096];
ZeroMemory(m_pBuf, sizeof(char) *  4096);
int iLen = Receive(m_pBuf, sizeof(char) * 4096);
if (iLen ==0)
{
break;
}

if (n_FileSize ==0)
{
m_file.Open(m_strRecvName,CFile::modeReadWrite);
n_FileSize = 1;
}
m_file.Write(m_pBuf,iLen);
}
这样不知道为什么图片显示的不全;
谁知道怎么设置包头包尾啊,最后怎么解析出来,希望能给点例子啊,如果以前有人做过,最好给我发一份,多谢了,我是初学。希望大家帮帮我。

解决方案 »

  1.   

      谢谢您的回答,可是我并没发送结构体啊,就是发送一个char*的指针,怎么发送结构体啊,希望您能多给点提示。谢谢~~
      

  2.   

    对方发送什么,你就接收什么并原样保存到文件中就行。下面链接有传输文件的例子:WebSrv, WebClnt,你对照一下:
    http://download.csdn.net/detail/geoff08zhang/4571358
      

  3.   


    没有Cansyncsocket的例子啊,呜呜
      

  4.   

    你用16进制编辑工具ue打开图片,把你发送的buffer的内容也用16进制打印出来对比一下看是否漏了什么内容
      

  5.   

    漏内容的话,我应该怎么解决啊。这类问题都是怎么做的,我实在是不会,希望你能在我程序的基础上改改,对了,这个程序发小的TXT文件是可以的,就是大文件的时候不行,麻烦你了,在帮我看看~~
      

  6.   

    只能提供思路和方法你自己解决问题了,你可以写最简单的open一个图片文件,读出所有内容放在buffer中然后循环发送知道全部成功发送为止,接收程序也运行在本地测试一下