1、1的目的Linux是在完成理论课程学习之后综合实践在学生掌握Linux的基本知识及常用的操作命令基础上提高学生对所学知识的应用能力特别是煅炼学生搜集有关Linux资料在资料文档的帮助下运用Linux的基本知识及常用的操作命令来解决问题的能力的基本要求要求能完成给定的任务并写出相应的总结报告1根据合理的进度安排按照程序的流程及方法踏实地 2 331 shell编程20分要求写出2个Shell程序每个不少于15行如实现自己模拟shell下的cdls指令等说明程序主要功能每行给出注释com 字符串的判断写一个脚本检测用户输入串的合法性 要求串由大小写字母数字组成无标点特殊符号空格思路将输入的串中 非
2、字母数字的内容删除或替换为空后若和原来输入的相同则合法否则不合法binbashisvalidAlphaNum compressed echo 1 sed salnumg 替换不合要求字符为空 if compressed 1 then return 1 not valide else return 0 valide fi 函数体判断字串的合法性echo -n Enter input -n 强制不换行read input 读取内容存到input中 无 符号if isvalidAlphaNum input then 加引号否则可能会出错 echo invalide exit 1elsevalidef
3、iexit 0运行截图com 份的截取转换输入一个 month day year格式的日期串程序将处理 month为 其英文单词的前三个字母第一个字母大写其余的小写思路首先判断month是数字还是单词若是数字则可查数字month映射表自定义case结构若是单词则取前三个字母并格式化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 1
4、2 month Dec0 Unknown numeric month value 1 2 exit 1 default esac return 0if -ne 3 then 若参数个数不为3则有误 echo Usage 0 month day year判断参数1是数字还是单词方法 替换串中所有数字若结果为空则为数字否则为单词if -n echo 1 sed sdigitg -n 检测串是为空then monthnoToName 1 数字 取第一个字母并将其变为大写再将结果与取出的第二三字母组合 month echo 1 cut c1 tr lower upper month month ech
5、o 1 cut -c2-3 tr upper lower echo month 2 3 输出结果32 聊天室编程50分设计并实现一个简单的程序可以是终端字符界面支持用户管理用户名密码注册和登录这个聊天室中的任何一个用户输入一段字符后室内的其他用户都可以看到这句话据此聊天程序分为客户端和服务器端客户端对应每一个参加聊天的用户完成从终端上输入采集并传递到服务器端和从服务器端接收信息输出显示的功能1客户端输入服务器IP和端口号2服务器成功启动3每个客户端可以找到服务器并可以与服务器进行连接4客户端与服务器可以实现通讯com 客户端功能模块 1连接服务器 连接服务器之前需要解析服务器地址创建套接字设置
6、相关参数2发送消息功能com 服务器功能模块com现1客户端代码include define TRUE 1define PORT 1000static int sockfdvoid recvfromserver 接受服务器消息线程入口函数 char mes1024 int nbytes 0 while 1 memset mes0sizeof mes nbytes read sockfdmessizeof mes if nbytes 0 mesnbytes 0 printf snmes pthread_exit NULL int main int argc char argv int sockf
7、d char buffer1024 struct sockaddr_in server_addr struct hostent host int portnumbernbytes char strhost com1 char clientname20 char password20 int thr_id thread ID for the newly created thread pthread_t p_thread threads structure if argc 1 fprintf stderrUsages anargv0 exit 1 if host gethostbyname str
8、host NULL Gethostname errorn 客户程序开始建立 sockfd 描述符 printf 正在建立套接口n if sockfd socket AF_INETSOCK_STREAM0 -1 Socket Errorsanstrerror errno 客户程序填充服务端的资料 bzero server_addrsizeof server_addr server_addrsin_family AF_INET server_addrsin_port htons PORT server_addrsin_addr struct in_addr host- h_addr 套接口创建成功
9、正在链接服务器n 客户程序发起连接请求 if connect sockfd struct sockaddr server_addr sizeof struct sockaddr -1 Connect Errorsan 连接成功了 链接服务器成功n欢迎来到聊天室n请输入你的用户昵称n scanf sclientname 请输入登录密码npassword n登陆成功 write sockfdclientnamesizeof clientname n开始聊天Quit断开连接nn thr_id pthread_create p_thread NULL recvfromserver NULL memse
10、t buffer0sizeof buffer scanf buffer strcat mesclientname strcat mes strcat mesbuffer printf main thread sn if write sockfdmessizeof mes -1 fprintf stderrWrite Errorsn exit 1 if strcmp bufferQuit 0 break 结束通讯 close sockfd exit 0 2服务器代码define LINE 1000 在一条消息中最大的输出字符数define LISTENQ 20 最大监听队列define PORT 1000 监听端口define FD 20 最大的在线用户数量void get_client void int sockfdistatic int i 0i表示当前client数组中最大的用户的i值static int clientFDvoid recvandsend void 监听转发线程入口函数 int index 0 int len int outindex 0 if i 0 memset buffer0sizeof buffer nbytes 0 index nbytes read clientindexbuff
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1