Java实现局域网聊天软件分享

来源:互联网 发布:央行黄金储备月度数据 编辑:程序博客网 时间:2024/05/05 18:21

  前言

                        翻翻u盘里面的东西,发现了自己以前实现的局域网聊天软件。这里共享出来给各位学习

                  Java的童鞋。对知识的渴望源自于人的内心,对知识的分享也源自于人的本性。

                   

         功能罗列

                      啥功能笔者就不去重新实践了,简单的罗列下功能列表:

                              1. 消息发送:用户可以发送消息给好友用户。
                              2. 消息接收:用户可以接收到好友用户发送给他的消息。
                              3、表情编辑:用户可以发送表情给好友,好友可以得到发送的表情
                              4、文件传输功能:好友之间可以实现文件的传输功能
                              5、好友之间可以实现远程协助
                              6、好友之间可以实现视频通信(待调试,貌似xp可以,其他不行)
                              7、用户可以编辑自己的状态、也可以给好友留言
                              8、支持离线消息的发送以及系统消息的获取
                              9、提供用户的查找、添加好友、删除好友
                             10、系统服务器管理功能:系统可以启动或者关闭服务。
                             11、系统提供一些必要的特色功能:音乐播放器、邮件发送(待实现)
                             12、消息历史记录

                      不过笔者貌似记得有些个功能还是不太完善的,希望有兴趣的童鞋可以自己发现并完善。

           项目结构

                          典型的C/S结构,自己实现了一个简单的服务器,主要实现客户端之间信息的转发,

                   离线消息的记录。看看工程结构:

                          服务器端:

                                     

                        客户端结构:

                                        

            如何运行 

                   1、SQL脚本导入

                            数据后台笔者使用的是MySQL数据库,因此想要运行的话,首先应该安装MySQL

                   数据库。这里我将其SQL脚本提供给读者,读者可自行导入创建数据库、表。

                            数据库名为ManChat

                      

[sql] view plaincopyprint?
  1. /*  
  2. Navicat MySQL Data Transfer  
  3.   
  4. Source Server         : localhost_3306  
  5. Source Server Version : 50051  
  6. Source Host           : localhost:3306  
  7. Source Database       : manchat  
  8.   
  9. Target Server Type    : MYSQL  
  10. Target Server Version : 50051  
  11. File Encoding         : 65001  
  12.   
  13. Date: 2013-05-28 22:35:49  
  14. */  
  15.   
  16. SET FOREIGN_KEY_CHECKS=0;  
  17.   
  18. -- ----------------------------  
  19. -- Table structure for `comment`  
  20. -- ----------------------------  
  21. DROP TABLE IF EXISTS `comment`;  
  22. CREATE TABLE `comment` (  
  23.   `auther` varchar(30) default NULL,  
  24.   `comment_content` varchar(50) default NULL,  
  25.   `commenter` varchar(30) default NULL  
  26. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  27.   
  28. -- ----------------------------  
  29. -- Records of comment  
  30. -- ----------------------------  
  31. INSERT INTO `comment` VALUES ('aaa''来一下''bbb');  
  32. INSERT INTO `comment` VALUES ('bbb''才回去''aaa');  
  33.   
  34. -- ----------------------------  
  35. -- Table structure for `relationship`  
  36. -- ----------------------------  
  37. DROP TABLE IF EXISTS `relationship`;  
  38. CREATE TABLE `relationship` (  
  39.   `id` int(10) unsigned NOT NULL auto_increment,  
  40.   `userid` int(10) unsigned NOT NULL,  
  41.   `friendid` int(10) unsigned NOT NULL,  
  42.   PRIMARY KEY  (`id`),  
  43.   KEY `FK_relationship_1` (`userid`),  
  44.   KEY `FK_relationship_2` (`friendid`),  
  45.   CONSTRAINT `FK_relationship_1` FOREIGN KEY (`userid`) REFERENCES `userinfo` (`id`),  
  46.   CONSTRAINT `FK_relationship_2` FOREIGN KEY (`friendid`) REFERENCES `userinfo` (`id`)  
  47. ) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8;  
  48.   
  49. -- ----------------------------  
  50. -- Records of relationship  
  51. -- ----------------------------  
  52. INSERT INTO `relationship` VALUES ('1''1''2');  
  53. INSERT INTO `relationship` VALUES ('2''2''1');  
  54. INSERT INTO `relationship` VALUES ('5''1''4');  
  55. INSERT INTO `relationship` VALUES ('6''4''1');  
  56. INSERT INTO `relationship` VALUES ('9''1''6');  
  57. INSERT INTO `relationship` VALUES ('10''6''1');  
  58. INSERT INTO `relationship` VALUES ('11''2''3');  
  59. INSERT INTO `relationship` VALUES ('12''3''2');  
  60. INSERT INTO `relationship` VALUES ('13''1''7');  
  61. INSERT INTO `relationship` VALUES ('14''7''1');  
  62. INSERT INTO `relationship` VALUES ('15''6''7');  
  63. INSERT INTO `relationship` VALUES ('16''7''6');  
  64. INSERT INTO `relationship` VALUES ('17''2''4');  
  65. INSERT INTO `relationship` VALUES ('18''4''2');  
  66. INSERT INTO `relationship` VALUES ('19''1''8');  
  67. INSERT INTO `relationship` VALUES ('20''8''1');  
  68. INSERT INTO `relationship` VALUES ('23''8''7');  
  69. INSERT INTO `relationship` VALUES ('24''7''8');  
  70. INSERT INTO `relationship` VALUES ('27''9''7');  
  71. INSERT INTO `relationship` VALUES ('28''7''9');  
  72. INSERT INTO `relationship` VALUES ('31''9''3');  
  73. INSERT INTO `relationship` VALUES ('32''3''9');  
  74. INSERT INTO `relationship` VALUES ('33''9''2');  
  75. INSERT INTO `relationship` VALUES ('34''2''9');  
  76. INSERT INTO `relationship` VALUES ('35''8''4');  
  77. INSERT INTO `relationship` VALUES ('36''4''8');  
  78. INSERT INTO `relationship` VALUES ('37''6''4');  
  79. INSERT INTO `relationship` VALUES ('38''4''6');  
  80. INSERT INTO `relationship` VALUES ('39''6''3');  
  81. INSERT INTO `relationship` VALUES ('40''3''6');  
  82. INSERT INTO `relationship` VALUES ('41''6''5');  
  83. INSERT INTO `relationship` VALUES ('42''5''6');  
  84. INSERT INTO `relationship` VALUES ('43''9''6');  
  85. INSERT INTO `relationship` VALUES ('44''6''9');  
  86. INSERT INTO `relationship` VALUES ('45''3''4');  
  87. INSERT INTO `relationship` VALUES ('46''4''3');  
  88. INSERT INTO `relationship` VALUES ('47''3''5');  
  89. INSERT INTO `relationship` VALUES ('48''5''3');  
  90. INSERT INTO `relationship` VALUES ('49''2''6');  
  91. INSERT INTO `relationship` VALUES ('50''6''2');  
  92. INSERT INTO `relationship` VALUES ('53''8''5');  
  93. INSERT INTO `relationship` VALUES ('54''5''8');  
  94. INSERT INTO `relationship` VALUES ('57''1''10');  
  95. INSERT INTO `relationship` VALUES ('58''10''1');  
  96. INSERT INTO `relationship` VALUES ('59''8''2');  
  97. INSERT INTO `relationship` VALUES ('60''2''8');  
  98. INSERT INTO `relationship` VALUES ('61''1''12');  
  99. INSERT INTO `relationship` VALUES ('62''12''1');  
  100. INSERT INTO `relationship` VALUES ('65''13''2');  
  101. INSERT INTO `relationship` VALUES ('66''2''13');  
  102. INSERT INTO `relationship` VALUES ('67''13''3');  
  103. INSERT INTO `relationship` VALUES ('68''3''13');  
  104. INSERT INTO `relationship` VALUES ('73''13''1');  
  105. INSERT INTO `relationship` VALUES ('74''1''13');  
  106. INSERT INTO `relationship` VALUES ('75''1''15');  
  107. INSERT INTO `relationship` VALUES ('76''15''1');  
  108.   
  109. -- ----------------------------  
  110. -- Table structure for `specificflag`  
  111. -- ----------------------------  
  112. DROP TABLE IF EXISTS `specificflag`;  
  113. CREATE TABLE `specificflag` (  
  114.   `userName` varchar(20) default NULL,  
  115.   `specificFlag` varchar(50) default NULL  
  116. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  117.   
  118. -- ----------------------------  
  119. -- Records of specificflag  
  120. -- ----------------------------  
  121. INSERT INTO `specificflag` VALUES ('aaa''哈哈,人生不如意之事十之八九');  
  122.   
  123. -- ----------------------------  
  124. -- Table structure for `userinfo`  
  125. -- ----------------------------  
  126. DROP TABLE IF EXISTS `userinfo`;  
  127. CREATE TABLE `userinfo` (  
  128.   `id` int(10) unsigned NOT NULL auto_increment,  
  129.   `username` varchar(45) NOT NULL,  
  130.   `userpwd` varchar(45) NOT NULL,  
  131.   `usersex` varchar(4) NOT NULL,  
  132.   `userage` int(10) unsigned NOT NULL,  
  133.   `userimage` varchar(100) default NULL,  
  134.   `userdownlinemsg` varchar(2000) default NULL,  
  135.   `userstate` varchar(1) NOT NULL,  
  136.   PRIMARY KEY  (`id`)  
  137. ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;  
  138.   
  139. -- ----------------------------  
  140. -- Records of userinfo  
  141. -- ----------------------------  
  142. INSERT INTO `userinfo` VALUES ('1''aaa''123''男''21''1'null'a');  
  143. INSERT INTO `userinfo` VALUES ('2''bbb''234''女''18''1'null'a');  
  144. INSERT INTO `userinfo` VALUES ('3''ccc''345''男''22''3'null'a');  
  145. INSERT INTO `userinfo` VALUES ('4''ddd''456''女''21''3'null'a');  
  146. INSERT INTO `userinfo` VALUES ('5''eee''567''男''18''4'null'a');  
  147. INSERT INTO `userinfo` VALUES ('6''fff''678''男''19''2'null'a');  
  148. INSERT INTO `userinfo` VALUES ('7''vampire''8528540''男''22''5'null'a');  
  149. INSERT INTO `userinfo` VALUES ('8''muhaha''nidaye''女''20''4'null'a');  
  150. INSERT INTO `userinfo` VALUES ('9''nidaye''muhaha''男''21''5'null'a');  
  151. INSERT INTO `userinfo` VALUES ('10''homepc''123456''女''21''3'null'a');  
  152. INSERT INTO `userinfo` VALUES ('11''chenyunpeng''62511cpy''男''21''2'null'a');  
  153. INSERT INTO `userinfo` VALUES ('12''abcd''123456''男''25''4'null'a');  
  154. INSERT INTO `userinfo` VALUES ('13''friendsyh''friendsyh''男''20''5'null'a');  
  155. INSERT INTO `userinfo` VALUES ('14''451694431''123456''男''23''2'null'a');  
  156. INSERT INTO `userinfo` VALUES ('15''cqlt''zx001212''男''20''2'null'a');  

              2、导入源码

                       在Eclipse中导入源码,修改相关的classpath,笔者使用的是JDK1.7,加了一些新特新

                (登录、注册的时候)。还有外部jar(主要是Mysql驱动包和一些美化包,美化包其实没怎么用)

                       我想这步就不需要笔者多说了吧,有什么问题可以留言问我!

              3、启动服务器

                        在启动服务器之前,我们需要通过运行ServleConfig做一些数据库配置。

                           

                        填上自己设置好的数据库的账号和密码

                           

                       之后运行ServerUI类,启动服务器,记住IP,等会客户端要用

                               

                  4、启动客户端

                              客户端的启动,首先也要配置信息。

                             

                                   

                          接下来运行clientBase下的

                               

                          之后的操作,都非常简单了,登录、注册......读者可以使用aaa 123(用户名  密码)、bbb 234

                    用户进行登录、相互聊天操作。

              运行相关效果图

                             简单的贴点效果图吧,详细的还需读者自己去操作:

                              

                             

                            

                           

                      至于其他功能需要读者自己去实践了,要说明的是视频聊天貌似只是在XP才支持。使用的

                     是JMF技术、内置了一个丑陋的音乐播放器。支持皮肤切换功能,读者自行去实践吧。

                      好了就到这里吧,希望各位朋友多多支持,3Q!

                      源码地址:http://download.csdn.net/detail/kiritor/5473229

                     Tank大战联机版 http://blog.csdn.net/kiritor/article/details/8948608

                     截图、取色功能:http://blog.csdn.net/kiritor/article/details/8708844