資源簡介
基于TCP的C/S結構程序,能上傳下載文件,在客戶端顯示進度,能隨時終止上傳下載,傳輸速度也還不錯

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?SERVER_PORT?7000?//偵聽端口
#define?BUF_SIZE??40960
char?*down_path?=?“E:\\第二個作業\\TCP\\downfile\\“;
char?down_name[][512]?=?{“11.rar““hh.exe““ll.exe““5.jpg“};
char?up_name[][512]?=?{“vc.rar““xinjiang.ts““kuwo.exe““dvb.pdf““4.jpg“};
unsigned?long?get_file_lenth(const?char*?filename)
{
????int?file_lenth;
????FILE?*fp=fopen(filename“rb“);
????if(fp==NULL)
????{
????????printf(“ERROE:open?file?%s?faile!\n“filename);
????????return?0;
????}
????fseek(fp0LSEEK_END);
????file_lenth=ftell(fp);
????fseek(fp0LSEEK_SET);
????return?file_lenth;
}
//文件上傳
void?client_put(const?char?filename[]SOCKET?sockfd)
{
char ?buf_client_write[BUF_SIZE];
int ?write_bytesfile_block;
FILE ?*fp;
long?int ?file_lenth;
long?int ?lenth[10];//裝文件長度數組
char ?filesize[256];
char ?ch;
int??????????i=0;
//將buf_server_write中文件名發送至服務端
????memset(buf_client_write0sizeof(buf_client_write));//將數組清空
????strncpy(buf_client_writefilenamestrlen(filename));?
????if((write_bytes=send(sockfdbuf_client_writeBUF_SIZE0))==-1)
????{
?????????printf(“Server?:?I?send?filename?fail?\n“);
?????????return;
????}
printf(“filename?success\n“);
file_lenth=get_file_lenth(filename);
????lenth[0]?=?file_lenth/1024;//將字節數轉換為KB
printf(“the?file?lenth?is?%d?KB\n“(lenth[0]+1));
//發送文件大小
itoa(file_lenthfilesize10);
send(sockfdfilesize256+10);
//打開要發送的文件
fp?=?fopen(filename“rb+“);
if(fp?==?NULL)
{
MessageBox(NULL“文件為空“““MB_OK);
return?;
}
else
{
//清空發送緩沖區
????????memset(buf_client_write0sizeof(buf_client_write));
????????file_block=0;
while(file_lenth>0)
????????{
if(!kbhit())//?沒有按鍵操作就傳輸數據
{
if((file_block=fread(buf_client_writesizeof(char)BUF_SIZEfp))<0)
{
printf(“read?error\n“);
return;
}
file_lenth?-=?file_block;
if(send(sockfdbuf_client_writefile_block0)<0)
{
printf(“send?error\n“);
return;
}
i++;
if(30?==?i)
{
fprintf(stdout“ˉ“);
i=0;
}
memset(buf_client_write0sizeof(buf_client_write));
if(feof(fp))
break;
}
else
{
ch?=?getch();
if(ch?!=?‘p‘)
continue;
do
{
ch?=?getch();?//?接收第二次按鍵
}
while(ch?!=?‘p‘);
}
??????????????
????????}
????????fclose(fp);
????????printf(“Client:?I?transmit?finish?!\n“);
}
}
//文件下載
void?client_get(const?char?filename[]SOCKET?sockfd)
{
char ???buf[BUF_SIZE]recv_buf[BUF_SIZE];
????int ???write_bytesread_bytesfile_block;
????FILE ???*fp1;
char???????filesize[256]ch;
long?int???filelen;
int ???i=0;
char ???full_name[512];
int time1time2;
fd_set?fdsets;
int?nTimeOut=0;
TIMEVAL?tv;
int?nNum;
tv.tv_sec?=?nTimeOut?/?1000;
tv.tv_usec?=?nTimeOut?%?1000;
nNum?=?select(0?&
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????119562??2014-03-26?21:38??TCP\client\4.jpg
?????文件???????7290??2014-04-02?15:16??TCP\client\client.c
?????文件???????4321??2014-03-21?21:20??TCP\client\client.dsp
?????文件????????535??2014-03-21?19:47??TCP\client\client.dsw
?????文件??????50176??2014-04-02?16:53??TCP\client\client.ncb
?????文件??????53760??2014-04-02?16:53??TCP\client\client.opt
?????文件????????246??2014-04-02?15:16??TCP\client\client.plg
?????文件????2057216??2014-03-26?20:35??TCP\client\Debug\client.bsc
?????文件?????188474??2014-04-02?15:16??TCP\client\Debug\client.exe
?????文件?????255472??2014-04-02?15:16??TCP\client\Debug\client.ilk
?????文件??????30326??2014-04-02?15:16??TCP\client\Debug\client.obj
?????文件????2853176??2014-04-02?11:46??TCP\client\Debug\client.pch
?????文件?????508928??2014-04-02?15:16??TCP\client\Debug\client.pdb
?????文件??????????0??2014-03-26?20:35??TCP\client\Debug\client.sbr
?????文件??????66560??2014-04-02?16:47??TCP\client\Debug\vc60.idb
?????文件??????69632??2014-04-02?15:16??TCP\client\Debug\vc60.pdb
?????文件?????794160??2014-03-26?08:51??TCP\client\dvb.pdf
?????文件?????119562??2012-04-07?12:26??TCP\server\4.jpg
?????文件?????783156??2014-03-09?10:12??TCP\server\5.jpg
?????文件????2057216??2014-03-24?12:05??TCP\server\Debug\server.bsc
?????文件?????167994??2014-04-02?11:52??TCP\server\Debug\server.exe
?????文件?????213004??2014-04-02?11:52??TCP\server\Debug\server.ilk
?????文件??????23026??2014-04-02?11:52??TCP\server\Debug\server.obj
?????文件????2856520??2014-04-02?11:52??TCP\server\Debug\server.pch
?????文件?????484352??2014-04-02?11:52??TCP\server\Debug\server.pdb
?????文件??????????0??2014-03-24?12:05??TCP\server\Debug\server.sbr
?????文件??????58368??2014-04-02?16:43??TCP\server\Debug\vc60.idb
?????文件??????69632??2014-04-02?11:52??TCP\server\Debug\vc60.pdb
?????文件?????199645??2009-03-21?09:49??TCP\server\Linux.mht
?????文件???????6733??2014-04-02?11:52??TCP\server\server.c
............此處省略13個文件信息
- 上一篇:銀行Logo銀行列表銀行名稱銀行編碼.rar
- 下一篇:捷聯慣導系統原理_陳哲
評論
共有 條評論