资源简介
winsock2 编写的下载demo,里面包含服务器和客户端,带界面,非多线程,非断点续传
代码片段和文件信息
#include “stdafx.h“
#include “MessagePack.h“
MessagePack::MessagePack() {};
MessagePack::~MessagePack() {};
int MessagePack::setFileLenRequest(string filename) {
// 协议帧头部
MessageHeader header;
// 头部初始化
header.Type = (UCHAR)1;
header.Reserved = (UCHAR)0;
header.Position = 0x00000000;
header.Length = 0x00000000;
// 将头部结构体转化为字符串
char* head = headerToChar(header);
// data为数据帧所有内容
char* data = new char[];
// 拷贝数据帧头部到data
memcpy(data head 10);
// 将文件名连接到帧头之后
int filenamelen = strlen(filename.c_str());
for(int i=0; i data[i+10] = filename[i];
}
// 将数据帧拷贝到s_data
memset(s_data ‘\0‘ sizeof(s_data));
for(int i=0; i<10+filenamelen; i++) {
s_data[i] = data[i];
}
return filenamelen+10;
}
int MessagePack::setFileConRequest(string filename int len) {
// 协议帧头部
MessageHeader header;
// 头部初始化
header.Type = (UCHAR)2;
header.Reserved = (UCHAR)0;
header.Position = 0x00000000;
header.Length = len;
// 将头部结构体转化为字符串
char* head = headerToChar(header);
// data为数据帧所有内容
char* data = new char[];
// 拷贝数据帧头部到data
memcpy(data head 10);
// 将文件名连接到帧头之后
int filenamelen = strlen(filename.c_str());
for(int i=0; i data[i+10] = filename[i];
}
// 将数据帧拷贝到s_data
memset(s_data ‘\0‘ sizeof(s_data));
for(int i=0; i<10+filenamelen; i++) {
s_data[i] = data[i];
}
return filenamelen+10;
}
char* MessagePack::headerToChar(MessageHeader header) {
char* headerdata = new char[10];
headerdata[0] = header.Type;
headerdata[1] = header.Reserved;
char* cposition = new char[4];
// 将无符号长整型分字节存储
cposition[0] = header.Position >> 24;
cposition[1] = header.Position >> 16;
cposition[2] = header.Position >> 8;
cposition[3] = header.Position;
for(int i=0; i<4; i++) {
headerdata[i+2] = cposition[i];
}
char* clength = new char[4];
// 将无符号长整型分字节存储
clength[0] = header.Length >> 24;
clength[1] = header.Length >> 16;
clength[2] = header.Length >> 8;
clength[3] = header.Length;
for(int i=0; i<4; i++) {
headerdata[i+6] = clength[i];
}
return headerdata;
}
bool MessagePack::SendRequest(SOCKET client int len) {
// 将s_data发送给服务器
int iSend;
iSend = send(client s_data len 0);
if(iSend == SOCKET_ERROR) {
return false;
} else {
return true;
}
}
bool MessagePack::SendDownload(SOCKET client int len) {
// 将s_data发送给服务器
int iSend;
iSend = send(client s_data len 0);
if(iSend == SOCKET_ERROR) {
return false;
} else {
return true;
}
}
int MessagePack::RecvReply(SOCKET client) {
// 接收数据
memset(r_data ‘\0‘ sizeof(r_data));
int iRecv;
iRecv = recv(client r_data sizeof(r_data) 0);
if(iRecv == SOCKET_ERROR) {
return -1;
} else {
// 接收成功,解析数据获取文件长度
int len = parsePack();
return len;
}
}
int MessagePack::RecvFile(SOCKET client string filename) {
// 接收数据
memset(r_data ‘\0‘ sizeof(r_data));
int iRecv;
iRecv = recv(c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 90767360 2017-01-02 13:51 PRJ\SelectFileClient\ipch\selectfileclient-d035ab87\selectfileclient-4c067fab.ipch
文件 4276 2016-12-06 13:50 PRJ\SelectFileClient\SelectFileClient\MessagePack.cpp
文件 917 2016-12-06 13:37 PRJ\SelectFileClient\SelectFileClient\MessagePack.h
文件 4207 2016-12-05 18:42 PRJ\SelectFileClient\SelectFileClient\ReadMe.txt
文件 67777 2012-01-11 01:22 PRJ\SelectFileClient\SelectFileClient\res\SelectFileClient.ico
文件 688 2016-12-05 18:42 PRJ\SelectFileClient\SelectFileClient\res\SelectFileClient.rc2
文件 1986 2016-12-05 18:57 PRJ\SelectFileClient\SelectFileClient\resource.h
文件 92056 2017-01-02 13:50 PRJ\SelectFileClient\SelectFileClient\SelectFileClient.aps
文件 2498 2016-12-05 18:42 PRJ\SelectFileClient\SelectFileClient\SelectFileClient.cpp
文件 502 2016-12-05 18:42 PRJ\SelectFileClient\SelectFileClient\SelectFileClient.h
文件 11984 2016-12-05 19:42 PRJ\SelectFileClient\SelectFileClient\SelectFileClient.rc
文件 6331 2016-12-05 21:29 PRJ\SelectFileClient\SelectFileClient\SelectFileClient.vcxproj
文件 2303 2016-12-05 21:29 PRJ\SelectFileClient\SelectFileClient\SelectFileClient.vcxproj.filters
文件 13280 2016-12-06 13:40 PRJ\SelectFileClient\SelectFileClient\SelectFileClientDlg.cpp
文件 1282 2016-12-06 12:54 PRJ\SelectFileClient\SelectFileClient\SelectFileClientDlg.h
文件 149 2016-12-05 18:42 PRJ\SelectFileClient\SelectFileClient\stdafx.cpp
文件 1578 2016-12-05 18:42 PRJ\SelectFileClient\SelectFileClient\stdafx.h
文件 234 2016-12-05 18:42 PRJ\SelectFileClient\SelectFileClient\targetver.h
文件 81330176 2017-01-02 13:53 PRJ\SelectFileClient\SelectFileClient.sdf
文件 915 2016-12-05 18:42 PRJ\SelectFileClient\SelectFileClient.sln
..A..H. 41984 2017-01-02 13:53 PRJ\SelectFileClient\SelectFileClient.v11.suo
文件 275456 2016-12-27 13:54 PRJ\SelectFileServer\Debug\SelectFileServer.exe
文件 1619892 2016-12-27 13:54 PRJ\SelectFileServer\Debug\SelectFileServer.ilk
文件 7023616 2016-12-27 13:54 PRJ\SelectFileServer\Debug\SelectFileServer.pdb
文件 90767360 2017-01-02 14:53 PRJ\SelectFileServer\ipch\selectfileserver-d3588bcf\selectfileserver-b31460c3.ipch
文件 4248 2016-12-27 13:54 PRJ\SelectFileServer\SelectFileServer\Debug\cl.command.1.tlog
文件 115482 2016-12-27 13:54 PRJ\SelectFileServer\SelectFileServer\Debug\CL.read.1.tlog
文件 2754 2016-12-27 13:54 PRJ\SelectFileServer\SelectFileServer\Debug\CL.write.1.tlog
文件 2 2016-12-27 13:54 PRJ\SelectFileServer\SelectFileServer\Debug\li
文件 2 2016-12-27 13:54 PRJ\SelectFileServer\SelectFileServer\Debug\li
............此处省略60个文件信息
相关资源
- C++播放音频198655
- VC++MFC封装的圆形按钮类
- C++程序设计谭浩强.pdf
- tensorflow180 C++ API CPU
- C++ Templates The Complete Guide (2nd Editio
- MFC编程自己的简单记事本教学视频和
- codeblocks-16.01mingw-setup.exe
- Devc++5.11
- C++ Primer 第5版 中文完整高清版
- C++Primer第五版 课后习题集完整版
- 数字图像处理与机器视觉 Visual C++与
- Visual C++音频视频处理技术及工程实践
- Linux多线程服务端编程 使用muduo C++网
- 大规模C++程序设计2003版和2014版.zip
- 黑马最新c、c++全栈培训第24期高清无
- c++标准程序库自修教程与参考手册
- C++程序设计经典300例源代码
- 微软技术丛书: Windows核心编程 第5版
- VC++6.0绿色版和番茄助手
- c-c++写的卷积神经网络
- C++ Primer Plus第6版中文版_带书签_超清
- C++ 程序设计语言:原书第4版第1~4部分
- 最新版信息学奥赛课课通配套资料C
- c++ Primer中文版第五版
- assimp5.0.1 C++ Tools.zip
- CC++学习指南 - 应用篇线程与网络)
- vc++ 条形码 二维码 识别
- 5G 大规模MIMO频谱仿真
- Learning OpenCV 3 Computer vision in C++ 无水印
- C++车道线检测例程,环境为VS2015以上
评论
共有 条评论