资源简介
计算机网络课程设计 基于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个文件信息
相关资源
- delphi_UDP文件传输
- ASIO文件传输DEMO
- 基于UDP的文件传输 TCPIP课程作业 包括
- 基于VS2010的CSocket网络文件传输
- 点对点文件传输课程设计
- iocp_file文件传输
- 串口发送接受文件工具
- 基于CSocket的局域网聊天和文件传输
- 基于QT的QQ聊天实现文件传输,消息记
- Wifi热点实现文件传输
- 多线程网络文件传输的设计与实现
- 基于Qt实现的多线程客户端与服务器
- 实现蓝牙传输文件源代码
- Xftp6个人免费版
- TCPSocket文件传输.rar
- Qt实现客户端与服务器消息发送与文件
- 基本web的文件传输系统
- TCP实现windows和linux之间文件传输
- 利用FTP进行两台电脑的文件传输
- 基于校园服务器和TCP协议的P2P聊天软
- QT tcp 聊天室
- QT TCP文件传输
- winsock 文件传输 多线程
- 基于Web系统的文件传输方法研究.
- MFTP文件传输
- UDP协议下基于Labview的文件传输
- Qt实现的文件传输和对话
- 基于UDP和TCP的Socket编程文件传输,D
- linux文件传输项目源码
- VC 局域网文件传输源代码(改进版
评论
共有 条评论