linux网络编程课程设计_计算机-linux-Unix相关.pdf

上传人:c****2 文档编号:93966762 上传时间:2023-07-20 格式:PDF 页数:13 大小:412.82KB
返回 下载 相关 举报
linux网络编程课程设计_计算机-linux-Unix相关.pdf_第1页
第1页 / 共13页
linux网络编程课程设计_计算机-linux-Unix相关.pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《linux网络编程课程设计_计算机-linux-Unix相关.pdf》由会员分享,可在线阅读,更多相关《linux网络编程课程设计_计算机-linux-Unix相关.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Linux 网络编程 课程设计 班级:姓名:指导老师:欢迎下载 2 一、设计背景 Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于 GNU 公约的软件你都可以任意使用并修改它的源代码。通过这次课程设计能更好的学习网络编程知识和掌握 LINUX平台上应用程序设计开发的过程,将大学四年所学知识综合运用,为未来的工作学习打下基础。二、设计目的 1、学习 epoll 跟 FTP被动模式 2、掌握 linux 基本命令,例如 ls、cd、login;3、学会如何编译、运行 三、环境要求 1、centos 64 位操作系统 2、gcc 编译器

2、四、设计原理 41 客户端 客户端程序的主要任务有以下 3 个:(1)、分析用户输入的命令。(2)、根据命令向服务器发出请求 (3)、接受服务器返回请求的结果 客户端为用户提供了 3 种命令:(1)、get:从服务器下载文件 (2)、list:列出客户端当前目录的内容(3)、quit 离开 4.2 服务器端(1)、分析请求代码。(2)、根据请求代码做相应的处理 (3)、等待返回结果或者应答信息 处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为未来的工作学习打下基

3、端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 3 五、软件测试结果 处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知

4、识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 4 处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将

5、大学四年所学知识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 5 六、部分主代码#include ftserve.h int main(int argc,char*argv)int sock_listen,s

6、ock_control,port,pid;if(argc!=2)printf(usage:./ftserve portn);exit(0);port=atoi(argv1);/create socket if(sock_listen=socket_create(port)0)perror(Error creating socket);exit(1);while(1)/wait for client request 处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为

7、未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 6 /create new socket for control connection if(sock_control=socket_accept(sock_listen)

8、0)break;/create child process to do actual file transfer if(pid=fork()0)perror(Error forking child process);else if(pid=0)close(sock_listen);ftserve_process(sock_control);close(sock_control);exit(0);close(sock_control);close(sock_listen);return 0;/*Send file specified in filename over data connectio

9、n,sending *control message over control connection *Handles case of null or invalid filename */void ftserve_retr(int sock_control,int sock_data,char*filename)FILE*fd=NULL;char dataMAXSIZE;size_t num_read;fd=fopen(filename,r);if(!fd)/send error code(550 Requested action not taken)send_response(sock_c

10、ontrol,550);else /send okay(150 File status okay)处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系

11、统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 7 send_response(sock_control,150);do num_read=fread(data,1,MAXSIZE,fd);if(num_read 0)printf(error in fread()n);/send block if(send(sock_data,data,num_read,0)0);/send message:226:closing conn,file transfer successful send_response(sock_control,226

12、);fclose(fd);/*Send list of files in current directory *over data connection *Return-1 on error,0 on success */int ftserve_list(int sock_data,int sock_control)char dataMAXSIZE;size_t num_read;FILE*fd;int rs=system(ls-l|tail-n+2 tmp.txt);if(rs 0)if(send(sock_data,data,num_read,0)0)perror(err);memset(

13、data,0,MAXSIZE);fclose(fd);send_response(sock_control,226);/send 226 return 0;/*Open data connection to client *Returns:socket for data connection *or-1 on error */int ftserve_start_data_conn(int sock_control)char buf1024;int wait,sock_data;/Wait for go-ahead on control conn if(recv(sock_control,&wa

14、it,sizeof wait,0)0)perror(Error while waiting);return-1;处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让

15、我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 9 /Get client address struct sockaddr_in client_addr;socklen_t len=sizeof client_addr;getpeername(sock_control,(struct sockaddr*)&client_addr,&len);inet_ntop(AF_INET,&client_addr.sin_addr,buf,sizeof(buf);/Initiate data connection with clie

16、nt if(sock_data=socket_connect(CLIENT_PORT_ID,buf)0)return-1;return sock_data;/*Authenticate a users credentials *Return 1 if authenticated,0 if not */int ftserve_check_user(char*user,char*pass)char usernameMAXSIZE;char passwordMAXSIZE;char*pch;char bufMAXSIZE;char*line=NULL;size_t num_read;size_t l

17、en=0;FILE*fd;int auth=0;fd=fopen(.auth,r);if(fd=NULL)perror(file not found);exit(1);while(num_read=getline(&line,&len,fd)!=-1)memset(buf,0,MAXSIZE);strcpy(buf,line);pch=strtok(buf,);处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析

18、用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 10 strcpy(username,pch);if(pch!=NULL)pch=strtok(NULL,);strcpy(password,pch);/remove end of line and whitespace tr

19、imstr(password,(int)strlen(password);if(strcmp(user,username)=0)&(strcmp(pass,password)=0)auth=1;break;free(line);fclose(fd);return auth;/*Log in connected client */int ftserve_login(int sock_control)char bufMAXSIZE;char userMAXSIZE;char passMAXSIZE;memset(user,0,MAXSIZE);memset(pass,0,MAXSIZE);mems

20、et(buf,0,MAXSIZE);/Wait to recieve username if(recv_data(sock_control,buf,sizeof(buf)=-1)perror(recv errorn);exit(1);int i=5;int n=0;处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文

21、件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 11 while(bufi!=0)usern+=bufi+;/tell client were ready for password send_response(sock_control,331);/Wait to recieve password memset(buf,0,MAXSIZE);if(recv_data(so

22、ck_control,buf,sizeof(buf)=-1)perror(recv errorn);exit(1);i=5;n=0;while(bufi!=0)passn+=bufi+;return(ftserve_check_user(user,pass);/*Wait for command from client and *send response *Returns response code */int ftserve_recv_cmd(int sock_control,char*cmd,char*arg)int rc=200;char bufferMAXSIZE;memset(bu

23、ffer,0,MAXSIZE);memset(cmd,0,5);memset(arg,0,MAXSIZE);/Wait to recieve command if(recv_data(sock_control,buffer,sizeof(buffer)=-1)perror(recv errorn);return-1;处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器

24、返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 12 strncpy(cmd,buffer,4);char*tmp=buffer+5;strcpy(arg,tmp);if(strcmp(cmd,QUIT)=0)rc=221;else if(strcmp(cmd,USER)=0)|(strcmp(cmd,PASS)=0)

25、|(strcmp(cmd,LIST)=0)|(strcmp(cmd,RETR)=0)rc=200;else /invalid command rc=502;send_response(sock_control,rc);return rc;/*Child process handles connection to client */void ftserve_process(int sock_control)int sock_data;char cmd5;char argMAXSIZE;/Send welcome message send_response(sock_control,220);/A

26、uthenticate user if(ftserve_login(sock_control)=1)send_response(sock_control,230);else send_response(sock_control,430);exit(0);处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端

27、当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载 欢迎下载 13 while(1)/Wait for command int rc=ftserve_recv_cmd(sock_control,cmd,arg);if(rc 0)|(rc=221)break;if(rc=200)/Open data connection with client if(sock_data=ftserve_start

28、_data_conn(sock_control)0)close(sock_control);exit(1);/Execute command if(strcmp(cmd,LIST)=0)/Do list ftserve_list(sock_data,sock_control);else if(strcmp(cmd,RETR)=0)/Do get ftserve_retr(sock_control,sock_data,arg);/Close data connection close(sock_data);七、设计总结 通过本次的 linux 程序与设计课程设计让我们学会使用 linux 系统和

29、 socket,极大的丰富了 linux 系统下编程和网络方面的知识,锻炼了动手能力,为以后的工作学习打下了坚实的基础。处在于操作系统源代码的公开化只要是基于公约的软件你都可以任意使用并修改它的源代码通过这次课程设计能更好的学习网络编程知识和掌握平台上应用程序设计开发的过程将大学四年所学知识综合运用为未来的工作学习打下基端客户端程序的主要任务有以下个分析用户入的命令根据命令向服务器发出请求接受服务器返回请求的结果客户端为用户提供了种命令从服务器下载文件列出客户端当前目录的内容离开服务器端分析请求代码根据请求代码做相应的下载欢迎下载欢迎下载欢迎下载欢迎下载欢迎下载七设计总结通过本次的程序与设计课程设计让我们学会使用系统和极大的丰富了系统下编程和网络方面的知识锻炼了动手能力为以后的工作学习打下了坚实的基础欢迎下载

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁