資源簡介
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個文件信息
評論
共有 條評論