91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8.42MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2023-11-10
  • 語言: 其他
  • 標簽: p2p??源碼??c++??

資源簡介

這個真的是,手把手寫的啊。是在局域網內實現的一個,簡單文件上傳下載。無服務器的那種,沒有做界面。思路很簡單,大家,可以隨便看看。 功能為,能夠從多臺主機上下載文件。 有興趣的可以給它做個界面呢。

資源截圖

代碼片段和文件信息


#include“CClient.h“

DWORD?WINAPI?killtimer(LPVOID?lp)
{
bool?*stop?=?(bool*)lp;
Sleep(WAITTIME);??//等待其他客戶端返回的時間設為60秒
*stop?=?false;
return?0;
}

int?socket_recv(SOCKET?sock?char?*buf?int?size)
{
????int?stat;
????int?index?=?0;
????while?(size?!=?0)
????{
????????stat?=?recv(sock(char*)buf+indexsize0);?
????????if?(stat?==?SOCKET_ERROR)?{
if(WSAGetLastError()?==?WSAEWOULDBLOCK)
continue;
break;
}
????????else?if?(stat?==?0)?
{
closesocket(sock);
break;
}
????????size?-=?stat;
????????index?+=?stat;
????}
????return?stat;
}

DWORD?WINAPI?downfile(LPVOID?lp)
{
#ifdef?_DEBUG1
cout<<“線程開始!“<#endif
PUPARAM?pup?=?(PUPARAM)lp;
SOCKET?socCli?=?pup->socket;
#ifdef?_DEBUG1
// printf(“UPAR參數:%d?%d?%s?%s\n“?pup->block_count?pup->socket?pup->filename.c_str()?pup->path.c_str());
#endif
// return?0;
//ioctlsocket(socCli?FIONBIO?(u_long?FAR*)&mode);
int?recstat??block;
int?i?=?0;
LoadFileMsg?lf;
?//將要下載的文件塊段
for(i?=?0;?i?block_list.size();?++i)
lf.block_list[i]?=?pup->block_list[i];
lf.block_list[i]?=?-1;
strcpy(lf.file_path?pup->path.c_str());
lf.block_count?=?pup->block_count;//一共將文件分成多少塊
block?=?pup->block_count;

int?stat;
// return?0;
stat?=?send(socCli?(char*)&lf?sizeof(LoadFileMsg)?0);?//將要下載的信息發送到對方
if(stat?==?SOCKET_ERROR)
{
#ifdef?_DEBUG1
cout<<“在發送下載信息時產生錯誤“<#endif
delete?pup;
closesocket(socCli);
return?-1;
}

FileManager?fm(pup->filename.c_str()?true);
cout<<“pup->filename“<filename<
delete?pup;
stat?=?fm.openfile();
if(stat?==?0)
{
#ifdef?_DEBUG1
cout<<“打開文件失敗“<#endif
closesocket(socCli);
return?-1;
}
#ifdef?_DEBUG1
cout<<“開始接收文件!“<#endif
// fstream?ffm(pup->filename.c_str()?ios::binary?|?ios::in?|?ios::out);

int?nZero?=?0;
setsockopt(socCli?SOL_SOCKET?SO_RCVBUF?(char?*)&nZerosizeof(nZero));
while(1)
{
BlockMsg?block;
recstat?=?socket_recv(socCli?(char*)&block?sizeof(BlockMsg));
if(recstat?==?SOCKET_ERROR)
{
cout<<“connection?will?be?closed?!“< cout< break;
}
if(block.block_n?>=?0?&&?block.block_n?<=?lf.block_count)
{
fm.storge_block(block.block_n?block.buf?block.block_size);
if((--i)?<=?0)//本線程的任務完成
break;
#ifdef?_DEBUG1
cout<<“正在接收數據塊“< // cout<<“???“< printf(“block.block_n?=?%d?block.block_size?=?%d?\n“?block.block_n?block.block_size);
#endif
}
}
cout<<“接收完畢“< fm.close();
closesocket(socCli);
return?0;
}

int?CClient::init()
{
if(WSAStartup(MAKEWORD(?1?1?)?&wsaData?)!=0)//進行WinSocket的初始化
{
printf(“Can‘t?initiates?windows?socket!Program?stop.\n“);//初始化失敗返回-1
return?-1;
}
return?0;
}
void?CClient::start()
{
if(init()?==?-1)
return;

cout<<“輸入要下載的文件名(全稱):“;
string?name;
while(cin>>name)
{
if(name?==?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????7596??2014-04-13?22:32??p2p\CClient.cpp

?????文件????????802??2014-04-11?23:13??p2p\CClient.h

?????文件???????4617??2014-04-13?00:17??p2p\CServer.cpp

?????文件????????433??2014-04-11?18:56??p2p\CServer.h

?????文件?????652801??2014-04-13?22:43??p2p\Debug\CClient.obj

?????文件??????????0??2014-04-13?22:43??p2p\Debug\CClient.sbr

?????文件?????290979??2014-04-13?22:43??p2p\Debug\CServer.obj

?????文件??????????0??2014-04-13?22:43??p2p\Debug\CServer.sbr

?????文件?????132535??2014-04-13?22:43??p2p\Debug\filemanager.obj

?????文件??????????0??2014-04-13?22:43??p2p\Debug\filemanager.sbr

?????文件??????63567??2014-04-13?22:43??p2p\Debug\main.obj

?????文件??????????0??2014-04-13?22:43??p2p\Debug\main.sbr

?????文件?????188304??2014-04-13?22:31??p2p\Debug\MD5.obj

?????文件??????????0??2014-04-13?22:31??p2p\Debug\MD5.sbr

?????文件????3671040??2014-04-13?22:43??p2p\Debug\p2p.bsc

?????文件?????704557??2014-04-13?22:43??p2p\Debug\p2p.exe

?????文件????1084380??2014-04-13?22:43??p2p\Debug\p2p.ilk

?????文件????7661876??2014-04-13?22:43??p2p\Debug\p2p.pch

?????文件????1369088??2014-04-13?22:43??p2p\Debug\p2p.pdb

?????文件?????238592??2014-04-13?22:43??p2p\Debug\vc60.idb

?????文件?????217088??2014-04-13?22:43??p2p\Debug\vc60.pdb

?????文件????????952??2014-04-12?20:17??p2p\filemanager.cpp

?????文件????????668??2014-04-12?23:57??p2p\filemanager.h

?????文件????????677??2014-04-10?17:50??p2p\FileManger.h

?????文件????????380??2014-04-13?22:46??p2p\main.cpp

?????文件???????9662??2009-12-25?09:57??p2p\MD5.cpp

?????文件????????903??2009-12-25?09:55??p2p\MD5.h

?????文件???????2162??2014-04-13?22:42??p2p\MSG.H

?????文件???????4848??2014-04-11?00:56??p2p\p2p.dsp

?????文件????????512??2014-04-08?17:23??p2p\p2p.dsw

............此處省略9個文件信息

評論

共有 條評論