linux聊天室报告(特制借鉴)

上传人:8** 文档编号:179781297 上传时间:2021-04-12 格式:DOC 页数:21 大小:415KB
返回 下载 相关 举报
linux聊天室报告(特制借鉴)_第1页
第1页 / 共21页
linux聊天室报告(特制借鉴)_第2页
第2页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《linux聊天室报告(特制借鉴)》由会员分享,可在线阅读,更多相关《linux聊天室报告(特制借鉴)(21页珍藏版)》请在金锄头文库上搜索。

1、Linux程序设计期末大作业报告 信息工程与自动化学院 专 业: 计算机科学与技术 年 级: 2009级 学 生 姓 名: 徐兴繁 学 生 学 号: 200910405214 任 课 教师姓名: 李英娜 任 课 教师职称:讲 师 摘要:shell是一种具备特殊特殊功能的程序,它是介于使用者和UNIX、/linux操作系统之核心程序间的一个接口。本设计主要实现一个Linux下的局域网聊天工具的设计。该设计主要分为两部分,客户端部分和服务器部分。设计并实现一个简单的聊天室程序,可以是终端字符界面,支持用户管理,用户名/密码注册和登录,客户端登陆到服务器聊天后,可以在聊天室内与其他用户交流(这个聊天

2、室中的任何一个用户输入一段字符后,室内的其他用户都可以看到这句话)。据此,聊天程序分为客户端和服务器端。客户端对应每一个参加聊天的用户,完成从终端上输入采集并传递到服务器端和从服务器端接收信息输出显示的功能。两个部分都使用C语言,利用vi编辑器,通过Berkeley套接口编程实现相关功能。关键词:linux,shell编程,聊天室,客户端,服务器,套接字。目录1、期末大作业的目的22、大作业的基本要求33、设计内容33、1 shell编程(20分)33.1.1字符串的判断33.1.2月份的截取转换43、2 聊天室编程(50分)53.2.1需要实现的主要功能63.2.2 客户端功能模块63.2.

3、3 服务器功能模块73.2.4代码实现:73.2.4设计结果截图:144、小结:175、参考文献171、期末大作业的目的Linux程序设计大作业是在完成理论课程学习之后,通过大作业的方式对学生进行综合实践考核,在学生掌握Linux的基本编程知识及常用的操作命令基础上,提高学生对所学知识的应用能力,特别是:煅炼学生搜集有关Linux资料,在资料文档的帮助下,运用Linux的基本知识及常用的操作命令来解决问题的能力。2、大作业的基本要求要求能完成给定的编程任务,并写出相应的大作业总结报告2.1、根据合理的进度安排,按照程序的流程及方法,踏实地完成期末大作业的任务安排。 2.2、按照任务要求,完成各

4、个功能模块的功能划分和程序编写,调试代码并运行。 2.3、按要求撰写大作业报告。3、设计内容3、1 shell编程(20分)要求:写出2个Shell程序,每个不少于15行(如实现自己模拟shell下的cd、ls指令等),说明程序主要功能,每行给出注释;3.1.1 字符串的判断写一个脚本,检测用户输入串的合法性, 要求串由大小写字母、数字组成,无标点、特殊符号、空格。思路:将输入的串中 非字母数字的内容删除或替换为空后若和原来输入的相同则合法,否则不合法。#!/bin/bashisvalidAlphaNum()compressed=$(echo $1 | sed s/:alnum:/g) #替换

5、不合要求字符为空if $compressed != $1 ; thenreturn 1# not valideelsereturn 0 # validefi#函数体,判断字串的合法性echo -n Enter input:# -n 强制不换行read input#读取内容存到input中, 无 $ 符号if ! isvalidAlphaNum &input ;then #加引号,否则可能会出错。echo invalideexit 1elseecho validefiexit 0运行截图:3.1.2 月份的截取转换输入一个 “month day year”格式的日期串,程序将处理” month”

6、为 其英文单词的前三个字母,第一个字母大写,其余的小写。思路:首先判断month是数字、还是单词,若是数字,则可查“数字month”映射表(自定义case结构);若是单词,则取前三个字母,并格式化。#!/bin/bashmonthnoToName() case $1 in 1 ) month=Jan ; 2 ) month=Feb ; 3 ) month=Mar ; 4 ) month=Apr ; 5 ) month=May ; 6 ) month=Jun ; 7 ) month=Jul ; 8 ) month=Aug ; 9 ) month=Sep ; 10) month=Oct ; 11)

7、 month=Nov ; 12) month=Dec ; * ) echo $0: Unknown numeric month value $1 &2; exit 1 # default, esac# return 0if $# -ne 3 ; then #若参数个数不为3,则有误echo “Usage: $0 month day year”exit 1fi#判断参数1是数字还是单词,方法 替换串中所有数字,若结果为空,则为数字,否则为单词。if -n $(echo $1 | sed s/:digit:/g) # -n 检测串是为空thenmonthnoToName $1# 数字else# 取

8、第一个字母并将其变为大写,再将结果与取出的第二三字母组合month=”$(echo $1 | cut c1 | tr :lower: :upper:)“month=”$month$(echo $1 | cut -c2-3 | tr :upper: :lower:)”fiecho $month $2 $3 # 输出结果exit 0运行截图:3、2 聊天室编程(50分)设计并实现一个简单的聊天室程序,可以是终端字符界面,支持用户管理,用户名/密码注册和登录,客户端登陆到服务器聊天后,可以在聊天室内与其他用户交流(这个聊天室中的任何一个用户输入一段字符后,室内的其他用户都可以看到这句话)。据此,聊天

9、程序分为客户端和服务器端。客户端对应每一个参加聊天的用户,完成从终端上输入采集并传递到服务器端和从服务器端接收信息输出显示的功能。3.2.1需要实现的主要功能(1)客户端输入服务器IP和端口号(2)服务器成功启动(3)每个客户端可以找到服务器,并可以与服务器进行连接(4)客户端与服务器可以实现通讯3.2.2 客户端功能模块(1)连接服务器连接服务器之前需要解析服务器地址,创建套接字,设置相关参数。(2)发送消息功能3.2.3 服务器功能模块3.2.4代码实现:(1)客户端代码#include #include #include #include #include #include #inclu

10、de #include #define TRUE 1#define PORT 1000 static int sockfd;void recvfromserver() /接受服务器消息线程入口函数char mes1024;int nbytes=0;while(1)memset(mes,0,sizeof(mes);nbytes=read(sockfd,mes,sizeof(mes);if(nbytes0)mesnbytes=0;printf(%sn,mes);pthread_exit(NULL);int main(int argc, char *argv)/int sockfd;char buf

11、fer1024;struct sockaddr_in server_addr;struct hostent *host;int portnumber,nbytes;char *strhost=127.0.0.1;char clientname20;char password20;char mes1024;int thr_id; /* thread ID for the newly created thread */pthread_t p_thread; /* threads structure */if(argc!=1)fprintf(stderr,Usage:%s an,argv0);exi

12、t(1);if(host=gethostbyname(strhost)=NULL)fprintf(stderr,Gethostname errorn);exit(1);/* 客户程序开始建立 sockfd 描述符 */printf(正在建立套接口.n);if(sockfd=socket(AF_INET,SOCK_STREAM,0)=-1)fprintf(stderr,Socket Error:%san,strerror(errno);exit(1);/* 客户程序填充服务端的资料 */bzero(&server_addr,sizeof(server_addr);server_addr.sin_family=AF_INET;server_addr.sin_port=htons(PORT);server_addr.sin_addr=*(struct in_addr *)host-h_addr);printf(套接口创建成功,正在链接服务器.n);/* 客户程

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

当前位置:首页 > 医学/心理学 > 康复医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号