基于TCP的C/S结构程序,能上传下载文件,在客户端显示进度,能随时终止上传下载,传输速度也还不错
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 119562 2014-03-26 21:38 TCPclient4.jpg
文件 7290 2014-04-02 15:16 TCPclientclient.c
文件 4321 2014-03-21 21:20 TCPclientclient.dsp
文件 535 2014-03-21 19:47 TCPclientclient.dsw
文件 50176 2014-04-02 16:53 TCPclientclient.ncb
文件 53760 2014-04-02 16:53 TCPclientclient.opt
文件 246 2014-04-02 15:16 TCPclientclient.plg
文件 2057216 2014-03-26 20:35 TCPclientDebugclient.bsc
文件 188474 2014-04-02 15:16 TCPclientDebugclient.exe
文件 255472 2014-04-02 15:16 TCPclientDebugclient.ilk
文件 30326 2014-04-02 15:16 TCPclientDebugclient.obj
文件 2853176 2014-04-02 11:46 TCPclientDebugclient.pch
文件 508928 2014-04-02 15:16 TCPclientDebugclient.pdb
文件 0 2014-03-26 20:35 TCPclientDebugclient.sbr
文件 66560 2014-04-02 16:47 TCPclientDebugvc60.idb
文件 69632 2014-04-02 15:16 TCPclientDebugvc60.pdb
文件 794160 2014-03-26 08:51 TCPclientdvb.pdf
文件 119562 2012-04-07 12:26 TCPserver4.jpg
文件 783156 2014-03-09 10:12 TCPserver5.jpg
文件 2057216 2014-03-24 12:05 TCPserverDebugserver.bsc
文件 167994 2014-04-02 11:52 TCPserverDebugserver.exe
文件 213004 2014-04-02 11:52 TCPserverDebugserver.ilk
文件 23026 2014-04-02 11:52 TCPserverDebugserver.obj
文件 2856520 2014-04-02 11:52 TCPserverDebugserver.pch
文件 484352 2014-04-02 11:52 TCPserverDebugserver.pdb
文件 0 2014-03-24 12:05 TCPserverDebugserver.sbr
文件 58368 2014-04-02 16:43 TCPserverDebugvc60.idb
文件 69632 2014-04-02 11:52 TCPserverDebugvc60.pdb
文件 199645 2009-03-21 09:49 TCPserverLinux.mht
文件 6733 2014-04-02 11:52 TCPserverserver.c
............此处省略13个文件信息
#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!
“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
“);
return;
}
printf(“filename success
“);
file_lenth=get_file_lenth(filename);
lenth[0] = file_lenth/1024;//将字节数转换为KB
printf(“the file lenth is %d KB
“(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
“);
return;
}
file_lenth -= file_block;
if(send(sockfdbuf_client_writefile_block0)<0)
{
printf(“send error
“);
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 !
“);
}
}
//文件下载
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 TCPclient4.jpg
文件 7290 2014-04-02 15:16 TCPclientclient.c
文件 4321 2014-03-21 21:20 TCPclientclient.dsp
文件 535 2014-03-21 19:47 TCPclientclient.dsw
文件 50176 2014-04-02 16:53 TCPclientclient.ncb
文件 53760 2014-04-02 16:53 TCPclientclient.opt
文件 246 2014-04-02 15:16 TCPclientclient.plg
文件 2057216 2014-03-26 20:35 TCPclientDebugclient.bsc
文件 188474 2014-04-02 15:16 TCPclientDebugclient.exe
文件 255472 2014-04-02 15:16 TCPclientDebugclient.ilk
文件 30326 2014-04-02 15:16 TCPclientDebugclient.obj
文件 2853176 2014-04-02 11:46 TCPclientDebugclient.pch
文件 508928 2014-04-02 15:16 TCPclientDebugclient.pdb
文件 0 2014-03-26 20:35 TCPclientDebugclient.sbr
文件 66560 2014-04-02 16:47 TCPclientDebugvc60.idb
文件 69632 2014-04-02 15:16 TCPclientDebugvc60.pdb
文件 794160 2014-03-26 08:51 TCPclientdvb.pdf
文件 119562 2012-04-07 12:26 TCPserver4.jpg
文件 783156 2014-03-09 10:12 TCPserver5.jpg
文件 2057216 2014-03-24 12:05 TCPserverDebugserver.bsc
文件 167994 2014-04-02 11:52 TCPserverDebugserver.exe
文件 213004 2014-04-02 11:52 TCPserverDebugserver.ilk
文件 23026 2014-04-02 11:52 TCPserverDebugserver.obj
文件 2856520 2014-04-02 11:52 TCPserverDebugserver.pch
文件 484352 2014-04-02 11:52 TCPserverDebugserver.pdb
文件 0 2014-03-24 12:05 TCPserverDebugserver.sbr
文件 58368 2014-04-02 16:43 TCPserverDebugvc60.idb
文件 69632 2014-04-02 11:52 TCPserverDebugvc60.pdb
文件 199645 2009-03-21 09:49 TCPserverLinux.mht
文件 6733 2014-04-02 11:52 TCPserverserver.c
............此处省略13个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)