本项目利用tcp协议在windows和linux之间传递文件,windows下实现服务器端,linux下实现客户端。此程序可以方便用户在windows和linux之间快速的传递文件,在局域网下传输速度可以达到8MB/s。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13700 2012-03-02 22:31 TCP文件传输client ransfer
文件 5610 2012-03-02 22:31 TCP文件传输client ransfer.c
文件 241 2012-03-02 22:44 TCP文件传输ReadMe.txt
文件 51833 2012-03-02 22:28 TCP文件传输TCP文件传输 .docx
文件 31744 2012-03-02 22:10 TCP文件传输TransferDebugTransfer.exe
文件 371444 2012-03-02 22:10 TCP文件传输TransferDebugTransfer.ilk
文件 412672 2012-03-02 22:10 TCP文件传输TransferDebugTransfer.pdb
文件 33226752 2012-03-02 20:21 TCP文件传输Transferipch ransfer-4d8310bf ransfer-81aa3f91.ipch
文件 680 2012-03-02 22:10 TCP文件传输TransferTransferDebugcl.command.1.tlog
文件 13258 2012-03-02 22:10 TCP文件传输TransferTransferDebugCL.read.1.tlog
文件 516 2012-03-02 22:10 TCP文件传输TransferTransferDebugCL.write.1.tlog
文件 1420 2012-03-02 22:10 TCP文件传输TransferTransferDebuglink.command.1.tlog
文件 2720 2012-03-02 22:10 TCP文件传输TransferTransferDebuglink.read.1.tlog
文件 884 2012-03-02 22:10 TCP文件传输TransferTransferDebuglink.write.1.tlog
文件 564 2012-03-02 22:10 TCP文件传输TransferTransferDebugmt.command.1.tlog
文件 846 2012-03-02 22:10 TCP文件传输TransferTransferDebugmt.read.1.tlog
文件 386 2012-03-02 22:10 TCP文件传输TransferTransferDebugmt.write.1.tlog
文件 381 2012-03-02 22:10 TCP文件传输TransferTransferDebugTransfer.exe.intermediate.manifest
文件 87 2012-03-02 22:10 TCP文件传输TransferTransferDebugTransfer.lastbuildstate
文件 4696 2012-03-02 22:10 TCP文件传输TransferTransferDebugTransfer.log
文件 32791 2012-03-02 22:10 TCP文件传输TransferTransferDebug ransfer.obj
文件 150528 2012-03-02 22:10 TCP文件传输TransferTransferDebugvc100.idb
文件 77824 2012-03-02 22:10 TCP文件传输TransferTransferDebugvc100.pdb
文件 5057 2012-03-02 21:33 TCP文件传输TransferTransfer ransfer.c
文件 3224 2012-02-23 21:59 TCP文件传输TransferTransferTransfer.vcxproj
文件 944 2012-02-23 21:59 TCP文件传输TransferTransferTransfer.vcxproj.filters
文件 143 2012-02-23 21:40 TCP文件传输TransferTransferTransfer.vcxproj.user
文件 25579520 2012-03-02 22:28 TCP文件传输TransferTransfer.sdf
文件 891 2012-02-23 21:40 TCP文件传输TransferTransfer.sln
..A..H. 11264 2012-03-02 22:28 TCP文件传输TransferTransfer.suo
............此处省略11个文件信息
#include
#include
#include
#include
#include
#include
#include
#include
//通过一个新建的socket利用缓冲区buffer向客户端传递文件,文件描述符是fp,是一个已经打开的文件
void send_file(char *bufferint NewConnectionFILE *fp)
{
int read_length=0;
int sum=0;
//while(fgets(buffer1000fp)!=NULL)//这种方法经过多次测试发现不行,原因就是不能返回读取的大小
while((read_length=fread(buffer11000fp))>0)
{
//int len=strlen(buffer);
int len=read_length;
int sended=0;
int count;
buffer[read_length]=‘ ‘;
while(len>0)
{
count=send(NewConnectionbuffer+sendedlen0);
len-=count;
sended+=count;
}
sum+=read_length;
}
fclose(fp);
printf(“succeed to transfer filesend length is %d
“sum);
}
int main(int argcchar *argv[])
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
char *path;
char* file_name;
char state;
char buffer[1000];
int choice;
if(argc <4)
{
perror(“Input format: transfer send/receive file_path ip port(optional)!
“);
exit(-1);
}
//获取用户的操作,1表示接收文件,2表示发送文件给服务器
choice=atoi(argv[1]);
//获取要接收文件在服务器上的路径或者要发送的文件
path=argv[2];
if(choice ==1)
printf(“want to receive file %s
“path);
else
printf(“want to send file %s
“path);
if(strrchr(path‘/‘)==NULL)
{
printf(“You have inputted a file without assigning a directory“);
if(choice ==1)
printf(“server can‘t locate the exact position of the file!
“);
else
printf(“client can‘t locate the file to send
“);
exit(-1);
}
file_name=strrchr(path‘/‘)+1;
sockfd=socket(AF_INETSOCK_STREAM0);
address.sin_family=AF_INET;
address.sin_addr.s_addr=inet_addr(argv[3]);
if(argc==5)
address.sin_port=htons(atoi(argv[4]));
else
address.sin_port=htons(12345);
len=sizeof(address);
result=connect(sockfd(struct sockaddr*)&addresslen);
if(result==-1)
{
perror(“connect failed!“);
exit(-1);
}
if(choice==1)//从服务器接收文件
{
printf(“ok
“);
//开始通信
write(sockfd“1“1);//向服务器发送一个标志,说明是要从服务器接收文件
write(sockfdpath100);
read(sockfd&state1);
if(state==‘1‘)
{
FILE *fp;
char directory[20]=“download/“;
fp=fopen(strcat(directoryfile_name)“rb“);//这里打开文件要按二进制打开,否则会在传输过程中出错,因为有换行符的问题
if(fp==NULL)
{
write(sockfd“0“1);
printf(“open or create file failed!
“);
exit(-1);
}
else
{
int file_length;
char length[10];
int finished=0;
int len=1000;
int count=0;
int read_length;
write(sockfd“1“1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13700 2012-03-02 22:31 TCP文件传输client ransfer
文件 5610 2012-03-02 22:31 TCP文件传输client ransfer.c
文件 241 2012-03-02 22:44 TCP文件传输ReadMe.txt
文件 51833 2012-03-02 22:28 TCP文件传输TCP文件传输 .docx
文件 31744 2012-03-02 22:10 TCP文件传输TransferDebugTransfer.exe
文件 371444 2012-03-02 22:10 TCP文件传输TransferDebugTransfer.ilk
文件 412672 2012-03-02 22:10 TCP文件传输TransferDebugTransfer.pdb
文件 33226752 2012-03-02 20:21 TCP文件传输Transferipch ransfer-4d8310bf ransfer-81aa3f91.ipch
文件 680 2012-03-02 22:10 TCP文件传输TransferTransferDebugcl.command.1.tlog
文件 13258 2012-03-02 22:10 TCP文件传输TransferTransferDebugCL.read.1.tlog
文件 516 2012-03-02 22:10 TCP文件传输TransferTransferDebugCL.write.1.tlog
文件 1420 2012-03-02 22:10 TCP文件传输TransferTransferDebugli
文件 2720 2012-03-02 22:10 TCP文件传输TransferTransferDebugli
文件 884 2012-03-02 22:10 TCP文件传输TransferTransferDebugli
文件 564 2012-03-02 22:10 TCP文件传输TransferTransferDebugmt.command.1.tlog
文件 846 2012-03-02 22:10 TCP文件传输TransferTransferDebugmt.read.1.tlog
文件 386 2012-03-02 22:10 TCP文件传输TransferTransferDebugmt.write.1.tlog
文件 381 2012-03-02 22:10 TCP文件传输TransferTransferDebugTransfer.exe.intermediate.manifest
文件 87 2012-03-02 22:10 TCP文件传输TransferTransferDebugTransfer.lastbuildstate
文件 4696 2012-03-02 22:10 TCP文件传输TransferTransferDebugTransfer.log
文件 32791 2012-03-02 22:10 TCP文件传输TransferTransferDebug ransfer.obj
文件 150528 2012-03-02 22:10 TCP文件传输TransferTransferDebugvc100.idb
文件 77824 2012-03-02 22:10 TCP文件传输TransferTransferDebugvc100.pdb
文件 5057 2012-03-02 21:33 TCP文件传输TransferTransfer ransfer.c
文件 3224 2012-02-23 21:59 TCP文件传输TransferTransferTransfer.vcxproj
文件 944 2012-02-23 21:59 TCP文件传输TransferTransferTransfer.vcxproj.filters
文件 143 2012-02-23 21:40 TCP文件传输TransferTransferTransfer.vcxproj.user
文件 25579520 2012-03-02 22:28 TCP文件传输TransferTransfer.sdf
文件 891 2012-02-23 21:40 TCP文件传输TransferTransfer.sln
..A..H. 11264 2012-03-02 22:28 TCP文件传输TransferTransfer.suo
............此处省略11个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)