Linux下基于Socket文件传送程序设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux下基于Socket文件传送程序设计 一、设计目的 掌握Linux网络开发知识。 掌握课题的设计步骤和方法。 提高Linux下c程序设计的能力。 掌握应用程序开发中的需求分析与方法。 二、设计分析 本设计是在Linux环境下基于Socket进行开发的。系统有一个服务器端和两个客户端组成。先是运行服务器等待两个客户端的连接请求,客户端1和客户端2分别登入到服务器上,登入成功后服务器会分别给客服端发送登陆成功提示。此时客户端1便可将指定文件里德内容打开,发送到服务器上,服务器接收后再将之转发给客户端2,接着客户端2新建一个文件,并将接收到的由服务器转发的内容写入到该文件中,由此便实现了不同客户端之间的文件传送。 三、系统设计 1.系统功能 1)开启服务器; 2)两个客户端登入服务器; 3)客户端1打开文件并传给服务器; 4)服务器将接收到的内容传给客户端2; 5)客户端2新建文件并保持收到的内容。 2.相关文件 fuwuqi.c是服务器源代码,kehuduan1.c是客户端1源代码,kehuduan2.c是客户端2源代码,fuwuqi是服务器执行文件,kehuduan1是客户端1执行文件,kehuduan2是客户端2执行文件,xshy.c是所要传送的文件,rec是接收文件所在的文件夹。 四、调试结果 服务器 客户端1 客户端2 五、设计总结 经过本次程序设计,提高了我在Linux下用C语言编写程序的能力,掌握了网络Socket编程,了解了有关网络方面的知识。本来是想设计双方都可以发送接收的,奈何能力不足,错误多多,暂时就只能先实现简单的一方发送一方接收,接下来会思考下如何进一步改善。 附录 fuwuqi.c #includesys/types.h #includesys/socket.h #includestdio.h #includestdlib.h #includeerrno.h #includestring.h #includeunistd.h #includenetinet/in.h #includesys/stat.h #includefcntl.h #define SERVPORT 10000 //端口号 #define BACKLOG 10 //最大请求数 #define MAX_CONNECTED_NC 10 #define MAXDATASIZE 64 //缓冲区长度 #define FILE_NAME_MAX_SIZE 512 int main() { struct sockaddr_in fuwuqi_sockaddr,kehuduan1_sockaddr,kehuduan2_sockaddr; int sin_size,shoudaozijieshu; int fuwuqi_fd,kehuduan1_fd,kehuduan2_fd; int wenjian_open,wenjian_write; char buf[MAXDATASIZE],temp[MAXDATASIZE],*IP1,*IP2; char *filename; if((fuwuqi_fd=socket(AF_INET,SOCK_STREAM,0))==-1) //建立服务器socket连接 { perror(socket); exit(1); } printf(socket success!\n); //设置server_sockaddr相关参数 fuwuqi_sockaddr.sin_family=AF_INET; fuwuqi_sockaddr.sin_port=htons(SERVPORT); fuwuqi_sockaddr.sin_addr.s_addr=INADDR_ANY; bzero((fuwuqi_sockaddr.sin_zero),8); //服务器绑定 if(bind(fuwuqi_fd,(struct sockaddr*)fuwuqi_sockaddr,sizeof(struct sockaddr))==-1) { perror(bind); exit(1); } printf(bind success!\n); if (listen(fuwuqi_fd,BACKLOG)==-1) )//服务器监听 { perror(listen); exit(1); } printf(listening...\n); sin_size=sizeof(struct sockaddr); //等待客户1连接 if((kehuduan1_fd=accept(fuwuqi_fd,(struct sockaddr*)kehuduan1_soc

文档评论(0)

638922bb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档