Linpop即时通讯系统
原始开发团队
XX大学软件学院 - 方程式团队(临时组成,已解散)
项目来源及背景
此项目为XX大学软件学院实训项目,需求为开发一款运行于Linux操作系统平台的IM(即时通信)软件,可以实现局域网内任意电脑之间的信息接受与发送,也可作为支持200人中小型企业,企业信息平台中的一个组件及功能存在。整个软件基于C/S结构,数据经过服务器转发,便于服务器对客户端传送过来的数据进行分析和处理,例如单对单聊天、群聊天等。客户端基于GTK+实现整个GUI框架,最终界面效果良好。
项目预期是使用MySQL数据库作为服务器后台数据库,用于联系人信息的动态加载和保存,以及聊天记录的保存等,已经实现Demo,但不稳定,故目前上传的版本把联系人信息写成了Hard Code到代码中。
开发环境
Ubuntu10.04、GTK+2,Eclipse for C/C++
已经实现的基本功能
1. 客户端GUI模仿了Tencent QQ
客户端使用GTK+2实现,布局和实现模仿了Tencent QQ,运行效果好;
2. 聊天数据经服务器转发
虽然测试环境为局域网,但数据经过服务器转发,可扩展性强,可以扩展不限于局域网;
3. 单对单聊天
支持单对单的聊天,仅支持已经上线用户,不支持离线消息;
4. 群聊
支持群聊,分为公司总群和各个部门的群;
5. 用户上线通知
用户上线消息会通过服务器转发,上线用户使各客户端对应用户文字信息颜色变成红色表示此用户在线;
6. 聊天记录保存
简单的聊天记录保存,格式为文本文件;
7. 文件传送
实现单对单的文件传送,效果良好稳定。
未实现的功能
1. 离线消息的传送
2. 聊天时表情、图片、字体的支持
3. 头像的修改
4. 服务器数据库的稳定支持
5. 文件多个传送
6. 语音、视频聊天
7. 更多未实现的功能
注意事项及说明
1. 由于项目开发时间为2010年年末,开发所用的GTK+版本为2.x,不保证较高版本的兼容;
2. GTK+客户端运行时需要输入的ID,有效ID从0610031001- 06100310011,具体请查看服务器端代码;
3. 作为Linux课程实训项目,时间紧迫,只实现了最基本的功能,目的还是在于学习知识而不是开发商业项目;
4. GTK+客户端连接服务器的配置文件为server.conf,是文本文件,记录了服务器的IP和端口,默认为127.0.0.1:6000,本机可运行多个客户端测试。
附记
经过尝试,Linpop项目最终利用MinGW+MSYS等工具被成功移植到Windows上,移植难点在于GTK+多线程无法适应Windows环境而出现死机情况,最后除了文件传送没能成功移植(文件传送涉及进度条不断更新,在Windows下处理多线程较麻烦,需要重构代码,未实现),其它功能能够稳定的运行。
若对移植过程感兴趣,可以将针对Linpop移植的详细过程上传,包括环境搭建,跨平台代码修改等。
Ubuntu10.04下运行效果
Windows下运行效果
代码下载
Ubuntu10.04下开发的原生版,不支持跨平台扩展,在Ubuntu下在相应目录下执行Make即可编译通过,前提是已经搭建好GTK+的开发环境;
2. 跨平台版下载
通过代码中的宏定义,同时支持Windows和Ubuntu,同样需要先搭建好Windows下的GTK+开发环境。在Windows使用MinGW执行Make生成可执行文件,Makefile文件为Makefile_Win32,在Ubuntu下的Makefile文件为Makefile_Linux,注意Windows下编译通过后生成的可执行文件的运行需要GTK+ Windows版本的支持,具体文件请参照Windows下可执行文件下载;
已经移植好的Linpop Windows可执行文件,包括Windows下运行GTK+所需要的DLL等文件,先运行服务器端的Linpop_Server.exe,然后直接执行客户端bin目录下的Linpop.exe运行客户端程序,登录即可测试效果。
版权声明
来源于网络,服务于网络,本项目原始开发者为XX大学软件学院方程式团队,项目开发所用的大部分知识和文档都来源于网络,来源于Open Source,故将开发后的代码也Open Source,请遵守Open Source License,本文所述的内容和代码仅供个人学习使用,不可用于其它非法用途,例如本文前所说的严重抄袭,一经查证,将依法追究其责任。若要是涉及商业用途(应该也不会),请联系我们。