• 大小: 77.77MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-18
  • 语言: C/C++
  • 标签: c++  下载  winsock2  

资源简介

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\link-cvtres.read.1.tlog

     文件          2  2016-12-27 13:54  PRJ\SelectFileServer\SelectFileServer\Debug\link-cvtres.write.1.tlog

............此处省略60个文件信息

评论

共有 条评论