Linux下网络聊天系统
系统分为两个结构:
1.聊天系统客户端。
客户端主要功能:
客户登录界面,客户选择输入注册和登录;
客户注册时,如果用户存在就提示用户已经存在,重新输入;
客户登录时需要验证码提醒,验证码不正确就会提示重新登录,如果用户已经在线、密码错误、用户不存在都会得到相应的提醒;
登录成功之后,会提示进入聊天界面,可以选择单聊或者群聊;
单聊会和指定用户发送消息;
群聊所有用户都会接受信息;
客户端使用是多进程将输出信息和输入信息分开处理,退出是要避免僵尸进程的删除,我使用的是wait()。
2.聊天系统服务器端。
服务器主要功能:
服务器采用的是守护进程,可以防止干扰现象的发送;
服务器接受客户的各种请求,且服务器会把数据返回给客户端做出相应的操作
服务器处理用户信息时,实际就是对链表、文件的操作;
服务器采用的是多线程,实现多用户同时登录;
我的用户信息和登录信息存放在文件中,添加和删除时频繁操作文件时,需要避免同时读写的问题;
群聊所有用户都会接受信息
项目中遇到的问题及解决方法
调试过程:
服务器多线程时,一直实现不了,不需要pthread_join();
创建进程时需要等待僵尸进程的出现;
聊天时只能单项进行聊天,读取不到后来的用户,需要重新读取文件的内容;
操作文件时不能同时读写,必须读写互斥,否则容易出现乱码;
实现转发时,必须要传送连接套接字,不能传输监听套接字。
其实开始做项目的时候,感觉项目很简单,没有什么困难的问题,但是真正当自己做起来以后感觉自己还需要有很长的路要走,项目中遇到了非常的问题,其实最好的进步方式就是在项目中成长,只要项目是自己完成,因为在做项目的时候,你会发现许多拆分的知识点你都需要重新的组装,融合,然后应用到项目中,当完成的那一刻,你一定都会感觉收获非常的巨大。。碰到不同问题的时候就是需要不停的解决,因为企业需要就是要有解决问题能力的人。项目做完以后,感觉自己的项目做的实在是太low了,一切的编程问题其实都是为了解决实际中遇到的问题,如果不能解决实际中遇到的问题,你的代码一定用处都没有,所以感觉自己还有很长的路需要走。
今年自己刚刚毕业,选择来到上海这座城市,我知道很迷茫和彷徨,但是今年我选中了方向,不再迷茫,我要朝着自己选中的方向不断的前进,就算前路荆棘。希望明年能够顺利的进入这个行业。