資源簡介
計算機網(wǎng)絡(luò)課程設(shè)計 基于TCP協(xié)議文件傳輸簡單實現(xiàn)

代碼片段和文件信息
#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)//發(fā)生錯誤
{
const?char?*errstr=“can‘t?list?files!\n“;
printf(“l(fā)ist?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)
{
//發(fā)送此項文件信息
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(;;)
//從文件中循環(huán)讀取數(shù)據(jù)并發(fā)送客戶端
{
int?r=fread(buf_send11024file);
if(send(datatcpsbuf_sendr0)==SOCKET_ERROR)
{
printf(“l(fā)ost?the?connection?to?client!\n“);
closesocket(datatcps);
return?0;
}
if(r<1024)//文件傳送結(jié)束
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??計算機網(wǎng)絡(luò)課程設(shè)計報告.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個文件信息
評論
共有 條評論