- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 《懂得爱:在亲密关系中成长》读书笔记.docx VIP
- 上海市中考语文专题复习:文言文虚词简表.pdf VIP
- 广西盐业公司的招聘试卷.pdf VIP
- 2025《民营经济促进法》解读课件PPT.pptx
- Haier海尔空调KFRd-120LW 7YAF81 KFRd-120LW 5YAF82 KFR-12ity 5YAF82用户手册.pdf
- 雪铁龙维修 手册 图DS_5LS_Owner_Book_ZH.pdf VIP
- 烟风煤支吊架设计手册-新版.pdf VIP
- 长期卧床鼻饲患者的护理ppt.pptx VIP
- 教学能力大赛教案--智慧工厂的安全策略之VLAN的划分.docx VIP
- GB 6246-2011 消防水带标准规范‘’.pdf
文档评论(0)