CSocket文件传输 分段传输的关键代码
来源:互联网 发布:网络互助平台有哪些 编辑:程序博客网 时间:2024/04/29 04:12
分段传输的关键代码
struct
FILEINFO
{
int
fileLength;
//文件长度
char
fileName[100];
//文件名
};
服务器:
CFileDialog fileDialog(TRUE);
//选择文件
if
(fileDialog.DoModal()==IDOK)
{
CString filename = fileDialog.GetPathName();
//文件路径
CString name = fileDialog.GetFileName();
//文件名字
//发送文件
CFile file;
if
(file.Open(filename,CFile::modeReadWrite|CFile::typeBinary))
{
//打开文件
FILEINFO myFileInfo;
//文件结构
int
length = file.GetLength();
//获取文件的长度
m_CtrlProgressSend.SetRange32(0,length);
//设置进度条大小
m_CtrlProgressSend.SetPos(0);
myFileInfo.fileLength = length;
//赋值文件长度
strcpy
(myFileInfo.fileName,name.GetBuffer(name.GetLength()));
//拷贝文件名
name.ReleaseBuffer();
//释放buffer
int
iBufSize = 1024*5;
//设置文件缓冲区长度
int
iSize = iBufSize ;
//一次读取的长度
LPBYTE
pBuf=
new
BYTE
[iBufSize];
//定义缓冲区
m_sockClient.Send(&myFileInfo,
sizeof
(myFileInfo));
//发送文件头信息
//发送文件
int
iNnmByte;
UINT
uiTotal = 0 ;
while
(uiTotal<length)
{
if
(length-uiTotal < iBufSize)
//如果发送小于1024*5 ,则发送剩余那些....
iSize = length-uiTotal;
iSize = file.Read(pBuf,iSize);
//读取文件到缓冲区
iNnmByte = m_sockClient.Send(pBuf,iSize);
//发送剩下iSize-iCount的文件
uiTotal += iNnmByte;
//uiTotal总发送量
m_CtrlProgressSend.SetPos(uiTotal);
}
}
m_info.ReplaceSel(
"发送文件完毕\r\n"
);
file.Close();
}
m_CtrlProgressSend.SetPos(0);
}
客户端
FILEINFO myFileInfo;
m_client.Receive(&myFileInfo,
sizeof
(myFileInfo));
//接受文件信息
m_progress.SetRange32(0,myFileInfo.fileLength);
//设置进度
CString str;
str.Format(myFileInfo.fileName);
//文件名字
CFile file;
if
(file.Open(str,CFile::modeCreate|CFile::modeWrite))
{
UINT
uiLength;
uiLength = myFileInfo.fileLength ;
//文件长度
int
iBufSize = 1024*5;
int
iSize = iBufSize ;
LPBYTE
pBuf =
new
BYTE
[iBufSize];
int
iNumByte;
UINT
uiTotal = 0 ;
while
(uiTotal < uiLength)
{
if
(uiLength-uiTotal<iBufSize)
iSize = uiLength - uiTotal ;
iNumByte = m_client.Receive(pBuf,iSize);
file.Write(pBuf,iNumByte);
//写入文件
uiTotal+=iNumByte;
m_progress.SetPos(uiTotal);
}
if
(pBuf)
{
delete
[] pBuf;
pBuf = NULL;
}
}
file.Close();
m_info.ReplaceSel(
"接受文件成功\r\n"
);
m_progress.SetPos(0);
0 0
- CSocket文件传输 分段传输的关键代码
- CSocket文件传输 分段传输的关键代码
- CSocket文件传输 分段传输的关键代码
- CSOCKET文件传输函数
- QT使用UDP方式传输文件的关键代码
- 基于Socket的文件传输(使用CSocket类)
- csocket udp传输
- 小白基于Csocket的局域网聊天文件传输软件C/S模式
- 代码风格的关键
- 文件传输 断点传输 c++
- java 文件传输 分块传输
- JS分段传输数据
- JSP返回的关键代码
- 确保关键代码的运行
- inputStream 数据分段传输问题
- inputStream 数据分段传输问题
- MFC的Csocket类
- CAsyncSocket,CSocket的使用方法
- 内核与内核模块:depmod,lsmod,modinfo,insmod,rmmod,mdprobe
- 03-树2. Tree Traversals Again (25)
- iOS中NSCharacterSet的使用详解
- TXT转换成pdf流畅的方法
- 专家详解SAT阅读考试难点
- CSocket文件传输 分段传输的关键代码
- 简单的横向ListView实现(version 3.0)
- Android Studio SVN插件消失问题
- 学习笔记快速记录
- MyEclipse 的Web项目移植到Eclipse中无法添加到Tomca
- Servlet详解(转载)
- Tap4fun杨祥吉:手游大佬最怕员工知道的那些事儿
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
- SQL查询初学者指南读书笔记(一)关系数据库和SQL介绍