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

  • 大小: 47KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-09
  • 語言: C/C++
  • 標簽: socket??文件傳輸??C++??

資源簡介

基于socket的文件傳輸示例,控制臺簡單進度與速度顯示

資源截圖

代碼片段和文件信息

#include“FileTransfer.h“

static?int?get_file_name(char*?destchar*?srcint?dest_lenint?src_len)
{
if(dest==NULL||src==NULL){
return?0;
}
int?i=0;
for(i=src_len-1;i>=0;i--){
if(src[i]==‘\\‘){
break;
}
}
if(i==0){
return?0;
}
memset(dest0dest_len);
strncpy(dest&src[i+1]src_len-i-1);
return?1;
}

?FileTransfer::FileTransfer()
{
}

?FileTransfer::~FileTransfer()
?{

?}

?int?FileTransfer::start_listen(int?port)
?{
?lis_socket_?=?::socket(AF_INET?SOCK_STREAM?IPPROTO_TCP);
?if(lis_socket_?==?INVALID_SOCKET){

?return?false;
?}
?//?填充sockaddr_in結構
?sockaddr_in?sin;
?sin.sin_family?=?AF_INET;
?sin.sin_port?=?htons(port);
?sin.sin_addr.S_un.S_addr?=?INADDR_ANY;

?//?綁定這個套節字到一個本地地址

?if(::bind(lis_socket_?(LPSOCKADDR)&sin?sizeof(sin))?==?SOCKET_ERROR){
?return?false;
?}

?if(::listen(lis_socket_5)==SOCKET_ERROR){
?return?false;
?};
?HANDLE?Hacc=(HANDLE)?_beginthreadex(NULL0accept_funthis0NULL);
?WaitForSingleobject(HaccINFINITE);?
?return?true;
?}


?unsigned?int?__stdcall??FileTransfer::?accept_fun(PVOID?pM)
?{
?FileTransfer*?transfer=(FileTransfer*)pM;
?sockaddr_in?client;
?int?sClientLength?=?sizeof(client);
?SOCKET?sClient?=?::accept(transfer->lis_socket_(sockaddr*)&client?&sClientLength);
?transfer->process_con_msg(sClient);
?return?0;
?}

?bool?FileTransfer::process_con_msg(?SOCKET&?socket)
?{

?char*?recBuf=new?char[256];
?ZeroMemory(recBufsizeof(256));
?int?nRec=::recv(socketrecBuf2560);
?if(nRec<=0)
?{
?return?false;
?}
?Msg*?msgbase=(Msg*)recBuf;
?switch(msgbase->op)
?{
?case?SEND_FILE:
?apply_file_recieve(socketmsgbase);
?break;

?}
?return?true;
?}

bool?FileTransfer::apply_file_recieve(SOCKET&?socketMsg*&?msgbase)
{
SendMsg*?msgFile=(SendMsg*)msgbase;
char?acc_file;
std::cout<<“請求文件傳輸:“<file_name<<“?同意?(y/n)“< while(std::cin>>acc_file){
switch(acc_file){
case?‘y‘:
case?‘Y‘:
break;
case?‘n‘:
case?‘N‘:
closesocket(socket);
return?false;
default:
std::cout<<“輸入錯誤,重新輸入“< continue;
};
break;
}


RecPrarm*?thPrarm=new?RecPrarm;
thPrarm->msg=msgFile;
thPrarm->socket=socket;

HANDLE?Hrec=(HANDLE)?_beginthreadex(NULL0recieve_funthPrarm0NULL);
WaitForSingleobject(HrecINFINITE);?
return?true;
}

??unsigned?int?__stdcall?FileTransfer::?file_connect(PVOID?pM)
{
FileInfo*?fileInfo=(FileInfo*)pM;

HANDLE?file;
DWORD??f_hsize;


file=?CreateFile?(fileInfo->file_path?GENERIC_READ|GENERIC_WRITE?\
FILE_SHARE_READ|FILE_SHARE_WRITE?NULL?OPEN_EXISTING?FILE_ATTRIBUTE_NORMAL?NULL?)?;
if(file?==?INVALID_HANDLE_VALUE?)//嘗試打開文件
{
std::cout<<“文件打開失敗“< return?0;
}



SOCKET?sClient?=?::socket(AF_INET?SOCK_STREAM?IPPROTO_TCP);
SOCKADDR_IN?sockAddr=fileInfo->sockAddr;

if(-1??==::?connect(sClient?(sockaddr*)&sockAddr?si

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

?????文件??????85504??2013-04-11?15:19??socket文件傳輸\FileTransfer.exe

?????文件???????5975??2013-04-11?15:19??socket文件傳輸\代碼\FileTransfer.cpp

?????文件????????938??2013-04-11?11:14??socket文件傳輸\代碼\FileTransfer.h

?????文件????????461??2012-07-11?16:12??socket文件傳輸\代碼\intialSoket.h

?????文件???????1218??2013-04-11?11:05??socket文件傳輸\代碼\源.cpp

?????文件??????33560??2013-04-11?15:21??socket文件傳輸\示例.PNG

?????目錄??????????0??2013-04-11?15:24??socket文件傳輸\代碼

?????目錄??????????0??2013-04-11?15:24??socket文件傳輸

-----------?---------??----------?-----??----

???????????????127656????????????????????8


評論

共有 條評論