蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > DOC文档下载
 

在Linux下基于TCP协议的文件传输程序汇总

  • 资源ID:52709465       资源大小:587.50KB        全文页数:12页
  • 资源格式: DOC        下载权限:游客/注册会员    下载费用:18积分 【人民币18元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要18积分 【人民币18元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

在Linux下基于TCP协议的文件传输程序汇总

Linux下基于TCP/IP协议的文件传输程序 【设计目的】 通过Linux C编程,设计一个基于TCP/IP的文件传输系统,实现网络文件的收发 【设计环境】 Ubuntu 12.04 【设计方案】 (1) 文件读写 随意文件都可以二进制的方式进行读写,为了实现随意文件类型的传输,在读写文件的过程中,必需采纳二进制的读写方式。 (2) 传输协议 为了保证数据的正确性,文件传输须要采纳一种牢靠的传输协议。UDP协议实现比较简洁,但UDP面对无连接,传输过程中,会出现丢包的状况,导致数据发送失败。故采纳面对连接的TCP/IP协议,防止传输过程中的数据丢失的状况。 (3) 大文件的传输 对于比较大的文件,应当进行分包操作,以防止占用过多的内存,导致文件发送失败。 【设计流程】 如图1所示,服务器程序作为文件的发送方。首先,服务器端输入要发送的文件。然后,创建一个流式套接字SOCK_STREAM,进行绑定。绑定胜利后,执行监听,当有客户发送连接恳求,执行Accept,接收来自客户端的恳求。 连接建立后,首先服务器向客服端发送的文件的文件名及扩展名等信息。信息发送完毕,服务器方将待发送的数据读入缓冲区,通过套接字将数据发送出去。发送完成后退出,并显示发送完成的信息。 图1 服务器流程图 如图2所示,客户端程序完成文件的接收操作。首先,创建一个流式套接字。套接字创建胜利后,对该套接字进行绑定。绑定胜利后,向服务器方发送连接恳求。连接胜利后,首先,接收服务器发送的文件信息。接收胜利后,起先数据的接收。文件接收完毕,显示文件已接收完成。 图2 客户端流程图 【设计测试】 了验证设计的正确性,在Ubuntu 12.04系统上对可执行文件进行了回环测试。 步骤如下 (1)测试文件a.txt及服务器端文件源fileserver.c和可执行文件fileserver 2客户端源文件及可执行文件 (3)执行服务器端文件fileserver并输入要传输的文件a.txt,等待客户端连接 (4)执行客户端文件fileclient,假如不输入IP地址将显示提示 (5)执行客户端文件后,输入完整吩咐,文件传输文件完成 (6)看到服务器端也显示文件传输完成 服务器源码 include stdio.h include stdlib.h include unistd.h include string.h include sys/types.h include sys/stat.h include sys/socket.h include netinet/in.h define PORT 6000 define LISTENQ 20 define BUFFSIZE 4096 define FILE_NAME_MAX_SIZE 512 int mainint argc, char **argv[] { //输入文件名称 char filename[FILE_NAME_MAX_SIZE]; bzerofilename,FILE_NAME_MAX_SIZE; printfPlease the file name you wana to send; scanfs,filename; getchar; //设置一个socket地址结构 int sockfd,connfd; struct sockaddr_in svraddr,clientaddr; bzerosvraddr,sizeofsvraddr;//把一段内存区的内容全部设置为0 svraddr.sin_familyAF_INET; svraddr.sin_addr.s_addrhtonlINADDR_ANY; svraddr.sin_porthtonsPORT; //创建用于internet的流协议TCPsocket sockfdsocketAF_INET,SOCK_STREAM,0; ifsockfd0 { perrorsocket; exit1; } //把socket和socket地址结构绑定 ifbindsockfd,struct sockaddr*svraddr,sizeofsvraddr0 { perrorbind; exit1; } //监听 iflistensockfd,LISTENQ0 { perrorlisten; exit1; } while1//服务器端始终运行 { socklen_t lengthsizeofclientaddr; //等待恳求 connfdacceptsockfd,struct sockaddr*clientaddr,length; ifconnfd0 { perrorconnect; exit1; } //发送文件信息 char buff[BUFFSIZE]; int count; bzerobuff,BUFFSIZE; strncpybuff,filename,strlenfilenameFILE_NAME_MAX_SIZEFILE_NAME_MAX_SIZEstrlenfilename; countsendconnfd,buff,BUFFSIZE,0; ifcount0 { perrorSend file imation; exit1; } //读取文件并发送文件 FILE *fdfilename,rb; iffdNUL

注意事项

本文(在Linux下基于TCP协议的文件传输程序汇总)为本站会员(18244465852)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开