NANCHANG UNIVERSITY
《Linux 系统编程》课程设计
题目:Linux 聊天室报告
学院:软件学院
专业:计算机软件
班级:计软 121 班
姓名:李俊楠
起讫日期:
2014. 12. 22—2015.1. 10
任课教师:陈悦
完成时间:2015年 1月 10日前
填表日期:2015年1月6日
目录
1、需求分析3
1.1 目介 ( 50 分)3
1.2功能需求3
2、系 分析 ........................................................... !未定 。
2.1 本程序需解决的有关技 ????????????4
2.2 程序流程??????????????????????
!未定 。
3、系 ???????????????????8
3.1 运行截 ??????????????????????8
3.2 程序代 ??????????????????????
4、小 :1
5、参考文献1
一、需求分析
1.1 项目介绍
1.1.1 介绍
本设计主要实现一个Linux 下的局域网聊天工具的设计。该设计主要分为两部分,客户
端部分和服务器部分。设计并实现一个简单的聊天室程序,可以是终端字符界面,支持用户
管理,用户名/密码注册和登录,客户端登陆到服务器聊天后,可以在聊天室内与其他用户
交流(这个聊天室中的任何一个用户输入一段字符后,室内的其他用户都可以看到这句话)。
据此, 聊天程序分为客户端和服务器端。客户端对应每一个参加聊天的用户,完成从终端上
输入采集并传递到服务器端和从服务器端接收信息输出显示的功能。
1.1.2 程序应满足如下要求:
必须出现多线程;
程序中要具备文件读取和写入的操作;
在程序中必须使用网络通信进行信息传输;
要求程序具备简单的菜单功能,根据用户的输入,执行相应的操作,在菜单界面,必须显示程序的名称、版本信息,开发者的名字、班级、学号等信息。
1.2 功能需求
1)客户端输入服务器 IP 和端口号
2)服务器成功启动
3)每个客户端可以找到服务器,并可以与服务器进行连接
4)客户端与服务器可以实现通讯
二、系统分析
2.1 本程序需解决的有关技术问题
2.1.1字符串的判断
写一个脚本,检测用户输入串的合法性, 要求串由大小写字母、数字组成,无标点、特殊符号、空格。
思路:将输入的串中 非字母数字的内容删除或替换为空后若和原来输入的相同则合法,否则不合法。
#!/bin/bash
isvalidAlphaNum()
{
compressed="$(echo $1 | sed 's/[^[:alnum:]]//g')" #替换不合要求字符为空 if [ "$compressed" != "$1" ] ; then
return 1 #not valide
else
return 0
#valide
fi
}
echo
read
#函数体,判断字串的合法性
-n "Enter input:"# -n 强制不换行
input#读取内容存到 input 中, 无
$
符号
if ! isvalidAlphaNum "&input" ;then
echo "invalide"
exit 1
#加引号,否则可能会出错。
else
echo "valide"
fi
exit 0
运行截图:
2.1.2 月份的截取转换
输入一个 “ month day year”格式的日期串,程序将处理 ”month”为 其英文单词的前三个字母,第一个字母大写,其余的小写。
思路:首先判断 month 是数字、还是单词,若是数字,则可查“数字—month ”
映射表(自定义case 结构);若是单词,则取前三个字母,并格式化。
#!/bin/bash
monthnoToName()
{
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) month="Nov";;12) month="Dec";;
* ) echo "$0: Unknown numeric month value $1" >&2; exit 1
esac#
return 0
# d