使用tcp协议实现文件传输

使用tcp协议实现文件传输

ID:35209210

大小:35.13 KB

页数:17页

时间:2019-03-21

使用tcp协议实现文件传输_第1页
使用tcp协议实现文件传输_第2页
使用tcp协议实现文件传输_第3页
使用tcp协议实现文件传输_第4页
使用tcp协议实现文件传输_第5页
资源描述:

《使用tcp协议实现文件传输》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、使用TCP协议实现文件传输2013-01-1810:35:43    我来说两句     作者:hanchaoqi收藏  我要投稿使用TCP协议实现文件传输。程序会分为服务器端和客户端,首先运行服务器端,监听来自客户端的连接,客户端运行后会通过程序内的服务器端IP地址,向服务器发送连接请求。双方建立请求之后,客户端将所需文件的文件名和绝对路径传输给服务器,如果服务器找到此文件,则将此文件传输给客户端,然后断开连接。 具体算法描述如下: 【1】服务器端: 1、初始化socket服务 2、监听连接请求并做相应

2、的处理 2.1创建监听套接字 2.2监听套接口 2.3接受套接字的连接 2.4接收客户端传来的数据 case文件绝对路径: 按照路径找到文件,并打开。提取本地文件名,发回给客户端 发送文件总长度给客户端 case已准备接收文件完毕 if发送缓冲区为空 读取文件,写入缓冲区 将文件流分成大小相同的组(最后一组可能会小一点),顺次发送给客户端 将缓冲区清空 case文件成功传送 打印消息,退出 case文件已存在 打印消息,退出 2.5关闭同客户端的连接 3、释放socket服务 【2】客户端: 1、初始化s

3、ocket,winsock服务 2、连接服务器,进行数据的传输 2.1初始化,创建套接字 2.2通过IP地址,向服务器发送连接请求,建立连接 2.3主动发送所求文件绝对路径 2.4接受服务器端数据并做相应处理 case打开文件错误: 重新发送文件绝对路径至服务器,请求重发 case文件长度: 打印消息 case文件名: if文件已经存在 发送“文件已经存在” else 分配缓冲区,并向服务器发送“Ready”消息 case文件流: 为已接收文件名创建文件 打开文件,将文件流数据写入文件,直至接收所有分组数

4、据 发送“成功接收“消息 3、关闭套接字 释放服务 源程序: 【1】服务器端: 头文件: [cpp] /*server.h*/ #pragmacomment(lib,"WS2_32") #include #include #include #include #ifndefCOMMONDEF_H #defineCOMMONDEF_H #defineMAX_PACKET_SIZE 10240  //数据包的最大长度,单位是s

5、izeof(char) #defineMAXFILEDIRLENGTH256  //存放文件路径的最大长度 #definePORT  4096  //端口号 //#defineSERVER_IP  "127.0.0.1"//server端的IP地址 //各种消息的宏定义 #defineINVALID_MSG   -1 //无效的消息标识 #defineMSG_FILENAME  1 //文件的名称 #defineMSG_FILELENGTH  2 //传送文件的长度 #defineMSG_CLIENT_R

6、EADY  3 //客户端准备接收文件 #defineMSG_FILE   4 //传送文件 #defineMSG_SENDFILESUCCESS  5 //传送文件成功 #defineMSG_OPENFILE_ERROR  10 //打开文件失败,可能是文件路径错误找不到文件等原因 #defineMSG_FILEALREADYEXIT_ERROR11 //要保存的文件已经存在了 classCCSDef { public: #pragmapack(1)   //使结构体的数据按照1字节来对齐,省空间 //

7、消息头 structTMSG_HEADER {   char  cMsgID;  //消息标识   TMSG_HEADER(charMsgID=INVALID_MSG)   :cMsgID(MsgID)   {   } }; //请求传送的文件名 //客户端传给服务器端的是全路径名称 //服务器传回给客户端的是文件名 structTMSG_FILENAME:publicTMSG_HEADER {   charszFileName[256]; //保存文件名的字符数组   TMSG_FILENAME()  

8、 :TMSG_HEADER(MSG_FILENAME)   {   } }; //传送文件长度 structTMSG_FILELENGTH:publicTMSG_HEADER {   longlLength;   TMSG_FILELENGTH(longlength)   :TMSG_HEADER(MSG_FILELENGTH),lLength(length)    {   } }; //Client端已经准备好了,要求Ser

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。