linux聊天室报告可编辑doc.docx
- 文档编号:506042
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:12
- 大小:90.02KB
linux聊天室报告可编辑doc.docx
《linux聊天室报告可编辑doc.docx》由会员分享,可在线阅读,更多相关《linux聊天室报告可编辑doc.docx(12页珍藏版)》请在冰豆网上搜索。
linux聊天室报告可编辑doc
linux聊天室报告
Linux程序设计
期末大作业报告
信息工程与自动化学院专业计算机科学与技术年级2009级学生姓名徐兴繁学生学号2任课教师姓名李英娜任课教师职称讲师
摘要shell是一种具备特殊特殊功能的程序它是介于使用者和UNIXlinux操作系统之核心程序间的一个接口本设计主要实现一个Linux下的局域网聊天工具的设计该设计主要分为两部分客户端部分和服务器部分设计并实现一个简单的程序可以是终端字符界面支持用户管理用户名密码注册和登录这个聊天室中的任何一个用户输入一段字符后室内的其他用户都可以看到这句话据此聊天程序分为客户端和服务器端客户端对应每一个参加聊天的用户完成从终端上输入采集并传递到服务器端和从服务器端接收信息输出显示的功能
关键词linuxshell编程聊天室客户端服务器套接字
1期末大作业的目的2
2大作业的基本要求3
3设计内容3
31shell编程20分3
com的判断3
com截取转换4
32聊天室编程50分5
com现的主要功能6
com客户端功能模块6
com服务器功能模块7
com现7
com果截图14
4小结17
5参考文献17
1的目的
《Linux》是在完成理论课程学习之后综合实践在学生掌握Linux的基本知识及常用的操作命令基础上提高学生对所学知识的应用能力特别是煅炼学生搜集有关Linux资料在资料文档的帮助下运用Linux的基本知识及常用的操作命令来解决问题的能力
的基本要求
要求能完成给定的任务并写出相应的总结报告
1根据合理的进度安排按照程序的流程及方法踏实地
2
3
31shell编程20分
要求写出2个Shell程序每个不少于15行如实现自己模拟shell下的cdls指令等说明程序主要功能每行给出注释
com字符串的判断
写一个脚本检测用户输入串的合法性要求串由大小写字母数字组成无标点特殊符号空格
思路将输入的串中非字母数字的内容删除或替换为空后若和原来输入的相同则合法否则不合法
binbash
isvalidAlphaNum
compressed"echo1seds[[alnum]]g"替换不合要求字符为空
if["compressed""1"]then
return1notvalide
else
return0valide
fi
函数体判断字串的合法性
echo-n"Enterinput"-n强制不换行
readinput读取内容存到input中无符号
ifisvalidAlphaNum"input"then加引号否则可能会出错
echo"invalide"
exit1
else
echo"valide"
fi
exit0
运行截图
com份的截取转换
输入一个monthdayyear格式的日期串程序将处理month为其英文单词的前三个字母第一个字母大写其余的小写
思路首先判断month是数字还是单词若是数字则可查数字month映射表自定义case结构若是单词则取前三个字母并格式化
binbash
monthnoToName
case1in
1month"Jan"2month"Feb"
3month"Mar"4month"Apr"
5month"May"6month"Jun"
7month"Jul"8month"Aug"
9month"Sep"10month"Oct"
11month"Nov"12month"Dec"
echo"0Unknownnumericmonthvalue1"2exit1default
esac
return0
if[-ne3]then若参数个数不为3则有误
echoUsage0monthdayyear
exit1
fi
判断参数1是数字还是单词方法替换串中所有数字若结果为空则为数字否则为单词
if[-necho1seds[[digit]]g]-n检测串是为空
then
monthnoToName1数字
else
取第一个字母并将其变为大写再将结果与取出的第二三字母组合
monthecho1cut–c1tr[lower][upper]
monthmonthecho1cut-c2-3tr[upper][lower]
fi
echomonth23输出结果
exit0
运行截图
32聊天室编程50分
设计并实现一个简单的程序可以是终端字符界面支持用户管理用户名密码注册和登录这个聊天室中的任何一个用户输入一段字符后室内的其他用户都可以看到这句话据此聊天程序分为客户端和服务器端客户端对应每一个参加聊天的用户完成从终端上输入采集并传递到服务器端和从服务器端接收信息输出显示的功能
1客户端输入服务器IP和端口号
2服务器成功启动
3每个客户端可以找到服务器并可以与服务器进行连接
4客户端与服务器可以实现通讯
com客户端功能模块
1连接服务器
连接服务器之前需要解析服务器地址创建套接字设置相关参数
2发送消息功能
com服务器功能模块
com现
1客户端代码
include
include
include
include
include
include
include
include
defineTRUE1
definePORT1000
staticintsockfd
voidrecvfromserver接受服务器消息线程入口函数
charmes[1024]
intnbytes0
while1
memsetmes0sizeofmes
nbytesreadsockfdmessizeofmes
ifnbytes0
mes[nbytes]\0
printf"s\n"mes
pthread_exitNULL
intmainintargccharargv[]
intsockfd
charbuffer[1024]
structsockaddr_inserver_addr
structhostenthost
intportnumbernbytes
charstrhost"com1"
charclientname[20]
charpassword[20]
charmes[1024]
intthr_idthreadIDforthenewlycreatedthread
pthread_tp_threadthreadsstructure
ifargc1
fprintfstderr"Usages\a\n"argv[0]
exit1
ifhostgethostbynamestrhostNULL
fprintfstderr"Gethostnameerror\n"
exit1
客户程序开始建立sockfd描述符
printf"正在建立套接口\n"
ifsockfdsocketAF_INETSOCK_STREAM0-1
fprintfstderr"SocketErrors\a\n"strerrorerrno
exit1
客户程序填充服务端的资料
bzeroserver_addrsizeofserver_addr
server_addrsin_familyAF_INET
server_addrsin_porthtonsPORT
server_addrsin_addrstructin_addrhost-h_addr
printf"套接口创建成功正在链接服务器\n"
客户程序发起连接请求
ifconnectsockfdstructsockaddrserver_addrsizeofstructsockaddr-1
fprintfstderr"ConnectErrors\a\n"strerrorerrno
exit1
连接成功了
printf"链接服务器成功\n欢迎来到聊天室\n"
printf"请输入你的用户昵称\n"
scanf"s"clientname
printf"请输入登录密码\n"
scanf"s"password
printf"\n登陆成功"
writesockfdclientnamesizeofclientname
printf"\n开始聊天\"Quit\"断开连接\n\n"
thr_idpthread_createp_threadNULLrecvfromserverNULL
while1
memsetbuffer0sizeofbuffer
memsetmes0sizeofmes
scanf"s"buffer
strcatmesclientname
strcatmes""
strcatmesbuffer
printf"mainthreads\n"mes
ifwritesockfdmessizeofmes-1
fprintfstderr"WriteErrors\n"strerrorerrno
exit1
ifstrcmpbuffer"Quit"0
break
结束通讯
closesockfd
exit0
2服务器代码
include
include
include
include
include
include
include
include
defineLINE1000在一条消息中最大的输出字符数
defineLISTENQ20最大监听队列
definePORT1000监听端口
defineFD20最大的在线用户数量
voidget_clientvoid
intsockfdi
staticinti0i表示当前client数组中最大的用户的i值
staticintclient[FD]
voidrecvandsendvoid监听转发线程入口函数
intindex0
intnbytes0
charbuffer[1024]
intlen
intoutindex0
while1
ifi0
memsetbuffer0sizeofbuffer
nbytes0
index
nbytesreadclient[index]buff
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 聊天室 报告 编辑 doc