[开源]Linpop即时通讯系统

exceed_me 2011-08-11 12:27:35
加精
Linpop即时通讯系统

严重声明:此项目的确是我们(XX大学软件学院-方程式团队)在2010年末开发的,最终提交给实训老师是2011年1月初,当时是我们秋季学期的Linux课程实训项目,我们有所有的文档资料和代码,包括同学和实训老师的证明及邮件历史,今天想分享到网络时无意间发现我们的代码和文档竟然被某人作为了《沈阳航空航天大学北方科技学院毕业设计(论文)》,见资源http://loong22kiral3.download.csdn.net/,看到论文二字我惊讶了,下载下来一看,一模一样,三个资源,代码完全没修改过,所谓的“论文”中除了前面的“绪论”自己不知道从哪弄过来外,其它文字竟然一模一样抄袭啊,看得我火大啊,这是我们组两个多月的成果啊,需求分析拷贝的,概要设计/详细设计拷贝的,不知道是谁把这些资料流出去的,很恼火,一定要调查清楚,我将联系这个学校,查清原因。

这个实训项目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课程实训项目,时间紧迫,只实现了最基本的功能,目的还是在于学习知识而不是开发商业项目。

附记

经过尝试,Linpop项目最终利用MinGW+MSYS等工具被成功移植到Windows上,移植难点在于GTK+多线程无法适应Windows环境而出现死机情况,最后除了文件传送没能成功移植(文件传送涉及进度条不断更新,在Windows下处理多线程较麻烦,需要重构代码,未实现),其它功能能够稳定的运行。
若对移植过程感兴趣,可以将针对Linpop移植的详细过程上传,包括环境搭建,跨平台代码修改等。

Ubuntu10.04下运行效果



Windows下运行效果




代码下载

1.Ubuntu10.04下原生版下载
Ubuntu10.04下开发的原生版,不支持跨平台扩展,在Ubuntu下在相应目录下执行Make即可编译通过,前提是已经搭建好GTK+的开发环境;
2. 跨平台版下载
通过代码中的宏定义,同时支持Windows和Ubuntu,同样需要先搭建好Windows下的GTK+开发环境。在Windows使用MinGW执行Make生成可执行文件,Makefile文件为Makefile_Win32,在Ubuntu下的Makefile文件为Makefile_Linux,注意Windows下编译通过后生成的可执行文件的运行需要GTK+ Windows版本的支持,具体文件请参照Windows下可执行文件下载;
3.Windows下可执行文件下载
已经移植好的Linpop Windows可执行文件,包括Windows下运行GTK+所需要的DLL等文件,先运行服务器端的Linpop_Server.exe,然后直接执行客户端bin目录下的Linpop.exe运行客户端程序,登录即可测试效果。

版权声明

来源于网络,服务于网络,本项目原始开发者为XX大学软件学院方程式团队,项目开发所用的大部分知识和文档都来源于网络,来源于OpenSource,故将开发后的代码也OpenSource,请遵守OpenSource License,本文所述的内容和代码仅供个人学习使用,不可用于其它非法用途,例如本文前所说的严重抄袭,一经查证,将依法追究其责任。若要是涉及商业用途(应该也不会),请联系我们。

博文链接:http://blog.csdn.net/exceed_me/article/details/6678077
...全文
5300 72 打赏 收藏 转发到动态 举报
写回复
用AI写文章
72 条回复
切换为时间正序
请发表友善的回复…
发表回复
hu5465 2014-01-05
  • 打赏
  • 举报
回复
我在UBUNTU下运行的 C语言 运行main.c文件 然后显示没有glib.c 是这么回事 能告诉我下吗 谢啦 我扣扣453843794 或者在发我扣扣邮箱
itachi777 2013-12-25
  • 打赏
  • 举报
回复
w339448123 2013-09-27
  • 打赏
  • 举报
回复
MAKR 一下,正好能用
exceed_me 2011-09-29
  • 打赏
  • 举报
回复
结帖!
qq120848369 2011-09-10
  • 打赏
  • 举报
回复
UDP通讯如何保证可靠性的,用了UDT还是UDX?

luo6620378xu 2011-09-09
  • 打赏
  • 举报
回复
顶一下,不过我只会写命令行代码。
随风起舞1 2011-09-09
  • 打赏
  • 举报
回复
Ubuntu10.04下运行效果
随风起舞1 2011-09-09
  • 打赏
  • 举报
回复
好好哈呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵
dreamzme 2011-08-25
  • 打赏
  • 举报
回复
请教下,你们原来参考的是开源代码是哪个?确实想看下socket部分。
exceed_me 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 60 楼 dreamzme 的回复:]

楼主的client能不能将界面代码与功能实现代码分开?
[/Quote]

主要目的不是客户端的实现,而是 GTK+,呵呵,抱歉了,Linux 下的 Socket 通信网上代码很多的,可以去找找!
dreamzme 2011-08-24
  • 打赏
  • 举报
回复
这样耦合性太强了,楼主应该分开的。
chenbin200818 2011-08-24
  • 打赏
  • 举报
回复
我也是 想看client 可是又不懂gtk 无法下手阿
dreamzme 2011-08-24
  • 打赏
  • 举报
回复
楼主的client能不能将界面代码与功能实现代码分开?
exceed_me 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 cbb1982118 的回复:]

不错 谢谢了, 刚刚 看完服务器端,算
不过提出一点建议:
1:代码写的比较糙,比较多的代码冗余
2:网络传输,struct结构应该取消其字节对齐, 1是为了减少不必要的传输量,2是为了兼容linux和windows不同的代码对齐方式
3:我在函数 client_login 中发现一个错误:判断已经登录后,send消息后应该立即返回,但是函数中却还向
array_sock中添加数据
……
[/Quote]

很感谢你能这么认真阅读代码,服务器端代码是由不同的人写的,代码中肯定会有不足的地方,很感谢你能够指出,上传的目的也就是为了方便大家学习,GTK+ 资料本来就很少,所以也算是作为给 GTK+ 初学者一点帮助吧(当然,我也是初学者,呵呵)!
cbb1982118 2011-08-23
  • 打赏
  • 举报
回复
不错 谢谢了, 刚刚 看完服务器端,算
不过提出一点建议:
1:代码写的比较糙,比较多的代码冗余
2:网络传输,struct结构应该取消其字节对齐, 1是为了减少不必要的传输量,2是为了兼容linux和windows不同的代码对齐方式
3:我在函数 client_login 中发现一个错误:判断已经登录后,send消息后应该立即返回,但是函数中却还向
array_sock中添加数据

以上就是我的一点建议, 不过还是要谢谢作者了,奉献了这些代码,让我们对即时通信系统有了一定的了解
exceed_me 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 56 楼 dreamzme 的回复:]

楼主啊,是不是没人分享出来,你们也不会开源了吧
[/Quote]

这是什么话,本来就打算开源的,一直没去弄!
dreamzme 2011-08-22
  • 打赏
  • 举报
回复
楼主啊,是不是没人分享出来,你们也不会开源了吧
zhan7505201 2011-08-21
  • 打赏
  • 举报
回复
好贴。顶!
exceed_me 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 cabbage21 的回复:]

密码没设吧 哈哈
[/Quote]

是啊是啊
sunangles 2011-08-20
  • 打赏
  • 举报
回复
正学习Linux中,加油!努力!
加载更多回复(48)

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧