下载此文档

使用tcp协议实现文件传输.doc


文档分类:IT计算机 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
1 / 17
使用TCP协议实现文件传输
2013-01-18 10:35:43     我来说两句       作者:hanchaoqi
收藏    我要投稿
使用TCP协议实现文件传输。程序会分为服务器端和客户端,首先运行服务器端,监听来自客户端的连接,客户端运行后会通过程序内的服务器端IP地址,向服 务器发送连接请求。双方建立请求之后,客户端将所需文件的文件名和绝对路径传输给服务器,如果服务器找到此文件,则将此文件传输给客户端,然后断开连接。
 
具体算法描述如下:
 
【1】服务器端:
 
1、初始化socket服务
 
2、监听连接请求并做相应的处理
 

 

 

 

 
case 文件绝对路径:
 
按照路径找到文件,并打开。提取本地文件名,发回给客户端
 
发送文件总长度给客户端
 
case 已准备接收文件完毕
 
if 发送缓冲区为空
 
读取文件,写入缓冲区
 
将文件流分成大小相同的组(最后一组可能会小一点),顺次发送给客户端
 
将缓冲区清空
 
case 文件成功传送
 
打印消息,退出
 
case 文件已存在
 
打印消息,退出
 

 
3、释放socket服务
 
【2】客户端:
 
1、初始化socket,winsock服务
 
2、连接服务器,进行数据的传输
 
,创建套接字
 
,向服务器发送连接请求,建立连接
 

 

 
case 打开文件错误:
 
重新发送文件绝对路径至服务器,请求重发
 
case 文件长度:
 
打印消息
 
case 文件名:
 
if 文件已经存在
 
发送“文件已经存在”
 
else
 
分配缓冲区,并向服务器发送“Ready”消息
 
case 文件流:
 
为已接收文件名创建文件
 
打开文件,将文件流数据写入文件,直至接收所有分组数据
 
发送“成功接收“消息
 
3、关闭套接字
 
释放服务
 
源程序:
 
【1】服务器端:
 
头文件:
 
[cpp]  
/**/  
#pragma comment(lib, "WS2_32")  
#include <>  
#include <iostream>  
#include <>  
#include<>  
#ifndef COMMONDEF_H  
#define COMMONDEF_H  
#define MAX_PACKET_SIZE   10240    // 数据包的最大长度,单位是sizeof(char)  
#define MAXFILEDIRLENGTH 256     // 存放文件路径的最大长度  
#define PORT     4096    // 端口号  
//#define SERVER_IP    "" // server端的IP地址  
// 各种消息的宏定义  
#define INVALID_MSG      -1   // 无效的消息标识  
#define MSG_FILENAME     1   // 文件的名称  
#define MSG_FILELENGTH     2   // 传送文件的长度  
#define MSG_CLIENT_READY    3   // 客户端准备接收文件  
#define MSG_FILE      4   // 传送文件  
#define MSG_SENDFILESUCCESS    5   // 传送文件成功  
#define MSG_OPENFILE_ERROR    10   // 打开文件失败,可能是文件路径错误找不到文件等原因  
#define MSG_FILEALREADYEXIT_ERROR 11   // 要保存的文件已经存在了  
class CCSDef  
{  
public:  
#pragma pack(1)      // 使结构体的数据按照1字节来对齐,省空间  
// 消息头  
struct TMSG_HEADER  
{

使用tcp协议实现文件传输 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人精品小课件
  • 文件大小74 KB
  • 时间2021-09-17