• 大小: 4.13MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-30
  • 语言: 其他
  • 标签: 文件传输  

资源简介

计算机网络课程设计 基于TCP协议文件传输简单实现

资源截图

代码片段和文件信息

#include 
#include 
#include 
using namespace std;

#pragma   comment(lib “wsock32.lib“)
#define PORT 4523
char buf_send[1024];
char buf_rec[1024];
SOCKET sockSrv;

//socket初始化
DWORD CreateSocket()
{
WSADATA WSAData;
if(WSAStartup(MAKEWORD(22)&WSAData)!=0)
{printf(“socket initialize failed!\n“);
return (-1);
}
sockSrv=socket(AF_INETSOCK_STREAM0);
if(sockSrv==SOCKET_ERROR)
{
printf(“socket create failed ! \n“);
WSACleanup();
return(-1);
}
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_port=htons(PORT);
addrSrv.sin_family=AF_INET;

//绑定端口
if(bind(sockSrv(struct sockaddr FAR *)&addrSrvsizeof(addrSrv))==SOCKET_ERROR)
{
printf(“Bind Error“);
return(-1);
}
return (1);
}
int SendFileRecord(SOCKET datatcpsWIN32_FIND_DATA *pfd)
//used to send response to client
{
char filerecord[MAX_PATH+32];
FILETIME ft;
FileTimeToLocalFileTime(&pfd->ftLastWriteTime&ft);
SYSTEMTIME lastwtime;
FileTimeToSystemTime(&ft&lastwtime);
char *dir=pfd->dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY?“
“:“ “;
sprintf(filerecord“%04d-%02d-%02d %02d:%02d  %5s %10d   %-20s\n“ 
lastwtime.wYear
lastwtime.wMonth
lastwtime.wDay
lastwtime.wHour
lastwtime.wMinute
dir
pfd->nFileSizeLow
pfd->cFileName);
if(send(datatcpsfilerecordstrlen(filerecord)0)==SOCKET_ERROR)
{
printf(“Error occurs when sending file list!\n“);
return 0;
}
return 1;
}

int SendFileList(SOCKET datatcps)
{
HANDLE hff;
WIN32_FIND_DATA fd; 
//搜索文件
hff=FindFirstFile(“*“&fd);
if(hff==INVALID_HANDLE_VALUE)//发生错误
{
const char *errstr=“can‘t list files!\n“;
printf(“list file error!\n“);
if(send(datatcpserrstrstrlen(errstr)0)==SOCKET_ERROR)
{
printf(“error occurs when sending file list!\n“);
}
closesocket(datatcps);
return 0;
}
BOOL fMoreFiles=TRUE;
while(fMoreFiles)
{
//发送此项文件信息
if(!SendFileRecord(datatcps&fd))
{
closesocket(datatcps);
return 0;
}
//搜索下一个文件
fMoreFiles=FindNextFile(hff&fd);
}
closesocket(datatcps);
return 1;
}



int SendFile(SOCKET datatcpsFILE* file)
{
printf(“sending file data..“);
for(;;)
//从文件中循环读取数据并发送客户端
{
int r=fread(buf_send11024file);
if(send(datatcpsbuf_sendr0)==SOCKET_ERROR)
{
printf(“lost the connection to client!\n“);
closesocket(datatcps);
return 0;
}
if(r<1024)//文件传送结束
break;
}
closesocket(datatcps);
printf(“done\n“);
return 1;
}


DWORD ProcessCmd()
{
if(listen(sockSrv5)<0)
{
printf(“Listen error!“);
return(-1);
}
printf(“Listening for the request……\n“);

SOCKADDR_IN addrclient;
int len=(sizeof(SOCKADDR_IN));


while(1)
{
SOCKET sockconn=accept(sockSrv(SOCKADDR*)&addrclient&len);
if(sockconn==INVALID_SOCKET)
continue;
else printf(“connecting from client\n“);

while(true)
{

char filen

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     336384  2012-06-19 21:50  计算机网络课程设计报告.doc

     文件         56  2012-06-19 21:28  FTP\ftpclient\a.txt

     文件         56  2012-06-19 21:33  FTP\ftpclient\b.txt

     文件    2130944  2009-12-25 10:40  FTP\ftpclient\Debug\FTPCLIENT1.bsc

     文件     544883  2012-06-19 21:12  FTP\ftpclient\Debug\FTPCLIENT1.exe

     文件     794936  2012-06-19 21:12  FTP\ftpclient\Debug\FTPCLIENT1.ilk

     文件     107440  2012-06-19 21:12  FTP\ftpclient\Debug\FTPCLIENT1.obj

     文件    5414548  2012-06-16 23:50  FTP\ftpclient\Debug\FTPCLIENT1.pch

     文件    1131520  2012-06-19 21:12  FTP\ftpclient\Debug\FTPCLIENT1.pdb

     文件          0  2009-12-25 10:40  FTP\ftpclient\Debug\FTPCLIENT1.sbr

     文件     304128  2012-06-19 21:33  FTP\ftpclient\Debug\vc60.idb

     文件     135168  2012-06-19 21:12  FTP\ftpclient\Debug\vc60.pdb

     文件       4592  2012-06-17 23:09  FTP\ftpclient\FTPCLIENT1.CPP

     文件       3449  2012-06-19 21:12  FTP\ftpclient\FTPCLIENT1.DSP

     文件        528  2012-06-19 21:49  FTP\ftpclient\FTPCLIENT1.DSW

     文件      41984  2012-06-19 21:49  FTP\ftpclient\FTPCLIENT1.ncb

     文件      48640  2012-06-19 21:49  FTP\ftpclient\FTPCLIENT1.OPT

     文件        768  2012-06-19 21:12  FTP\ftpclient\FTPCLIENT1.plg

     文件         56  2012-06-19 21:36  FTP\ftpsever\a.txt

     文件         56  2012-06-19 21:28  FTP\ftpsever\b.txt

     文件        746  2009-12-24 14:26  FTP\ftpsever\Client.plg

     文件     262256  2012-06-19 21:13  FTP\ftpsever\Debug\ftpsever.exe

     文件     399376  2012-06-19 21:13  FTP\ftpsever\Debug\ftpsever.ilk

     文件      62428  2012-06-19 21:13  FTP\ftpsever\Debug\ftpsever.obj

     文件    5414548  2012-06-17 15:15  FTP\ftpsever\Debug\ftpsever.pch

     文件     615424  2012-06-17 15:15  FTP\ftpsever\Debug\ftpsever.pdb

     文件     304128  2012-06-19 21:33  FTP\ftpsever\Debug\vc60.idb

     文件     135168  2012-06-17 15:15  FTP\ftpsever\Debug\vc60.pdb

     文件       5406  2009-12-24 16:27  FTP\ftpsever\ftpsever.cpp

     文件       3425  2012-06-19 21:13  FTP\ftpsever\ftpsever.dsp

............此处省略12个文件信息

评论

共有 条评论