LSD及LSD项目的总结:

LSD(linux system desine)中文名称是Linux程序设计

LSD的功能或者说作用就是用C语言编写一个Linux下的软件程序,能实现不同的客户端与服务器之间的通讯和简单功能的处理。

主要课程内容:

文件操作

               1.io读写

               2.查看修改文件权限

               3.软硬链接

               4.查看文件属性

               5.缓存

               6.重定向

进程与信号

               1.子进程

                      a.孤儿进程

                      b.僵尸进程

               2.启动新进程

                3.信号

POSIX线程

              1. 创建、属性、回收

               2.同步

               3.异步

                4.多线程

进程间通讯:管道,信号量,信号,共享内存、消息队列、套接字


LSD项目,要求是要编写一个《远程终端管理系统》,要求实现以下功能:

1.不同的终端与服务器进行通讯(套接字socket)

2.注册与登录

3.能实现心跳功能和查看服务器端shell命令输出结果

4.能查看在线用户

5.能使不同的用户之间能聊天

6.广播聊天(群聊)

项目思路:

1.先将服务器和客户端的进行网络连接

2.创建用户信息链表和数据包结构

3.服务器读取客户端发送的信息,根据数据包类型的不同,switch (type)选择相应的功能,处理后发送数据包到客户端

4.客户端创建对应的子线程用于接受服务器端发送的数据包,根据数据包类型不同选择不同的功能输出服务器端的处理结果。客户端是主动发送信息的,所以客户端根据功能选择相应的选项。

踏过的坑:

1.客户端没有创建专门的子线程来读,直接根据相应的功能发送和读取信息,后面出现一系列的读取错误。

2.把客户端和服务器之间的关系搞混了,把服务器的代码写在客户端或是客户端的代码写在服务器里。

3.写的时间太长,导致修改部分之后,其他的没有修改完,出现乱码,段错误。逻辑错误才是我期间遇到的最大的错误。

自我总结:

1.整个LSD的课程学习期间,自己没有用心去学习,掌握不是很好,学习的强度很大,白天课上新知识点,晚上回去写作业,第二天YY课堂讲习题,貌似这样计划不错,但实际上,有很多东西吸引我的注意力,比如得到的新开专栏,微信群里的一些发言或是老师讲课枯燥无趣,或是上课老师敲代码,自己却懒得敲心想着晚上或者其他时间可以敲代码,往往实际上代码还在那里,很少有时间去再敲一篇,不懂时就看看老师的代码案例,对照着把题目做完,仅仅就是做完,做对而已。没有时间去想这些该怎么探索或者其他方案。

2.做项目开始的时候,看起来做的功能很少,所以看起来写的会很快,这是我看到项目的想法。这就导致我对项目有一个没有紧迫感的感受,即使项目答辩前,程序还有一堆bug,我也是不太紧张。

3.自己以为很简单的东西,没有做什么规划分析,只知道埋头按照自己的想法做,但是做出来的效果不是很好,也少于人讨论自己的想法,导致在错误的路上走了很远。有点太自以为是,自我膨胀,以为自己以前也做过类似的东西,做起来估计差不多,其实差很多。需要戒骄戒躁,学完一门课程,更要及时清零,不要让以前的经验阻碍自己,进入一门课程就当新的一门课程来学。接待一个项目要像一个新的项目来做。

4.做一个进度规划和整体的项目思路很重要。这是自己积累和学习的方面。多写代码,这是快速提高自己编程能力的快速方法

5.最好多与人讨论,交流自己的想法,分享自己觉得不错的点子。

你可能感兴趣的:(LSD及LSD项目的总结:)