收藏 分销(赏)

linux网络编程课程设计报告书.doc

上传人:二*** 文档编号:4573078 上传时间:2024-09-30 格式:DOC 页数:13 大小:404KB
下载 相关 举报
linux网络编程课程设计报告书.doc_第1页
第1页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

2、有以下3个: 1、分析用户输入的命令。 2、根据命令向服务器发出请求 3、接受服务器返回请求的结果 客户端为用户提供了3种命令: 1、get:从服务器下载文件 2、list:列出客户端当前目录的内容3、quit离开4.2 服务器端1、分析请求代码。 2、根据请求代码做相应的处理 3、等待返回结果或者应答信息五、软件测试结果六、部分主代码#include ftserve.hint mainint sock_listen, sock_control, port, pid;if printf;exit;port = atoi;/ create socketif sock_listen = socke

3、t_create perror;exit;while / wait for client request/ create new socket for control connectionif sock_control = socket_acceptbreak;/ create child process to do actual file transferif pid = fork perror; else if close;ftserve_process;close;exit;close;close;return 0;/* * Send file specified in filename

4、 over data connection, sending * control message over control connection * Handles case of null or invalid filename */void ftserve_retrFILE* fd = NULL;char dataMAXSIZE;size_t num_read;fd = fopen;if / send error code send_response; else / send okay send_response;do num_read = fread;if num_read printf

5、error in freadn;/ send blockif send perror; while 0;/ send message: 226: closing conn, file transfer successfulsend_response;fclose;/* * Send list of files in current directory * over data connection * Return -1 on error, 0 on success */int ftserve_listchar dataMAXSIZE;size_t num_read;FILE* fd;int r

6、s = system tmp.txt;if rs exit;fd = fopen;if exit;/* Seek to the beginning of the file */fseek;send_response; /startingmemset;while num_read = fread 0 if send perror;memset;fclose;send_response;/ send 226return 0;/* * Open data connection to client * Returns: socket for data connection * or -1 on err

7、or */int ftserve_start_data_connchar buf1024;int wait, sock_data;/ Wait for go-ahead on control connif recv perror;return -1;/ Get client addressstruct sockaddr_in client_addr;socklen_t len = sizeof client_addr;getpeernamesock_control, &client_addr, &len;inet_ntopAF_INET, &client_addr.sin_addr, buf,

8、 sizeof;/ Initiate data connection with clientif sock_data = socket_connect return -1;return sock_data;/* * Authenticate a users credentials * Return 1 if authenticated, 0 if not */int ftserve_check_userchar usernameMAXSIZE;char passwordMAXSIZE;char *pch;char bufMAXSIZE;char *line = NULL;size_t num_

9、read;size_t len = 0;FILE* fd;int auth = 0;fd = fopen;if perror;exit;while num_read = getline != -1 memset;strcpy;pch = strtok ;strcpy;if pch = strtok ;strcpy;/ remove end of line and whitespacetrimstrpassword, strlen;if strcmp=0 & strcmp=0 auth = 1;break;free;fclose;return auth;/* * Log in connected

10、 client */int ftserve_loginchar bufMAXSIZE;char userMAXSIZE;char passMAXSIZE;memset;memset;memset;/ Wait to recieve usernameif recv_datasock_control, buf, sizeof = -1 perror; exit;int i = 5;int n = 0;while usern+ = bufi+;/ tell client were ready for passwordsend_response;/ Wait to recieve passwordme

11、mset;if recv_datasock_control, buf, sizeof = -1 perror; exit;i = 5;n = 0;while passn+ = bufi+;return ftserve_check_user;/* * Wait for command from client and * send response * Returns response code */int ftserve_recv_cmdint rc = 200;char bufferMAXSIZE;memset;memset;memset;/ Wait to recieve commandif

12、 recv_datasock_control, buffer, sizeof = -1 perror; return -1;strncpy;char *tmp = buffer + 5;strcpy;if strcmp=0 rc = 221; else ifstrcmp=0 | strcmp=0 |strcmp=0 | strcmp=0 rc = 200; else /invalid commandrc = 502;send_response;return rc;/* * Child process handles connection to client */void ftserve_pro

13、cessint sock_data;char cmd5;char argMAXSIZE;/ Send welcome messagesend_response;/ Authenticate userif ftserve_login = 1 send_response; else send_response;exit;while / Wait for commandint rc = ftserve_recv_cmd;if rc | break;if / Open data connection with clientif sock_data = ftserve_start_data_conn close;exit; / Execute commandif strcmp=0 / Do listftserve_list; else if strcmp=0 / Do get ftserve_retr;/ Close data connectionclose; 七、设计总结通过本次的linux程序与设计课程设计让我们学会使用linux系统和socket,极大的丰富了linux系统下编程和网络方面的知识,锻炼了动手能力,为以后的工作学习打下了坚实的基础。13 / 13

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服