一个即时通讯软件MyICQ的源代码

此作者2002年搞好这个半成品后就没在继续开发。

Visual C++源码 一个即时通讯软件MyICQ的源代码

 
---------------
1. MyICQ是什么?
---------------
    MyICQ是一套公开源代码的即时通讯软件,包括服务器端和客户端,可以用于互联网或局域网中。可以运行在Windows或Linux(KDE/Qt)操作系统上,这是Windows版。目前客户端程序的界面完全模仿腾讯的QQ(如果Tencent告我的话,我会马上改的:-)。
    总之,如果你崇尚自由,对QQ的越来越多的广告骚扰感到深恶痛绝的话,MyICQ绝对是你很好的选择。

--------
2. 版本
--------
这是MyICQ 0.8版本的alpha1 测试版,基本上还没有经过什么严格测试。

--------
3. 版权
--------
完全遵循GPL协议2.0或以后协议版本。

---------------
4. 基本功能特点
---------------
1) 收发(离线)消息(如果客户端之间能直接通讯,则通过UDP协议发送,否则通过服务器中转)
2) 添加/删除好友(可以设置身份验证)
3) 服务器端存储好友列表
4) 在客户端存储好友资料和聊天记录
5) 客户端与服务器端用DES的密钥加密方式通讯
6) 支持代理服务器(SOCKS5/HTTP)
7) 向在线的一组好友发送消息
8) 系统管理员(MyICQ号 < 1000)可以发送系统广播消息
9) 皮肤系统
10)完全基于插件,使扩展更容易。目前提供的插件有:
   a. 收发文件
   b. 二人世界(可以实时语音聊天)
   c. 闹钟提醒

------------------
5. 分发包里有什么?
------------------
分发包里有三个目录:
myicq/  客户端程序
myicqd/  服务器端程序
myicqhttp/ HTTP的转换程序。MyICQ支持HTTP代理,但需要在MyICQ的服务器端运行myicqhttp程序

--------
6. 安装
--------
客户端程序不写Windows注册表,无需安装。双击MyICQ.exe运行。
服务器端由于内部采用MySQL数据库,所以安装稍微麻烦一些:
1) 到 http://www.mysql.com下载MySQL
2) 打开一个DOS命令窗口,在MySQL中建立一个数据库,并添加一个用户:
   C:/mysql/bin> mysql -uroot -p
   ******** (输入root密码,如果还没有设置,直接输入回车即可)
   mysql> GRANT ALL ON myicq.* TO [email=myicq@localhost]myicq@localhost[/email] IDENTIFIED BY 'myicq';
   mysql> CREATE DATABASE myicq;
   mysql> quit
3) 创建表格:
   C:/mysql/bin> mysql -umyicq -Dmyicq -p < [myicqd目录]/myicq.sql
   password: myicq
   注意: [myicqd目录]代表myicqd所在的目录
4) 运行myicqd:
   双击myicqd.exe即可运行。如果没有错误,应该显示"MyICQ server is now started".
   接下来就可以从客户端注册新用户了。
5) 你可能想要添加一个系统用户,以发送系统广播消息:
   C:/mysql/bin> mysql -umyicq -Dmyicq -p
   password: myicq
   mysql> INSERT INTO basic_tbl (uin, passwd) VALUES(100, password('yourpassword'));
   mysql> INSERT INTO ext_tbl (uin) VALUES(100);
   注意: yourpassword代表系统用户的密码
   然后选择客户端程序的注册向导,取回100这个号码。完成后,你会发现在主菜单中多了"广播消息"一项。此后,你可以选择个人设定来设定你的个人信息(比如,不允许任何人加我为好友)
   
-------------
7. 编译源代码
-------------
如果你是一个程序员,那么一定要编译MyICQ的源代码:-)
1) 到 http://www.mysql.com下载MySQL
2) 由于MyICQ在存储好友资料和聊天记录时,使用Berkeley DB库,
3) 编译Berkeley DB
4) 在VC的Tools->Options->Directories中设置好MySQL和BerkeleyDB的include和library路径
5) 在VC中打开myicq-win32/src/win32/myicq.dsw项目文件
6) 编译

---------
8. TODO
---------
1) POP3邮件自动监测(插件)
2) 文件共享(插件)
3) 一些小游戏(插件,如俄罗斯方块)
4) 发送好友/URL消息
5) 更完善的皮肤系统
6) 服务器端改为Windows服务程序
7) 服务器端的性能和稳定性

-----------
9. 共同开发
-----------
    MyICQ是我利用上学和上班的空闲时间编写的,发展到现在已经是一个比较大的工程了,以我一个人的力量继续编写下去将非常困难。希望广大的程序员高手能够参与到这个项目中来,为自由软件贡献一份力量。
我在sourceforge.net上申请了CVS服务空间,项目名是myicq-free。有意加入者请与我联系。

-----------
10. 联系方式
-----------
如果你在使用MyICQ的过程中,遇到了什么BUG,或是有什么新的想法和建议,或是喜欢这个程序,我将非常高兴收到你的来信。

Linux用户请不要着急,等在Windows下测试稳定后,马上就会出Linux版的!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
系统采用客户/服务器摸式 服务器与客户间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类 java.net.Socket.,使得编写网络应用程序相对容易.服务器采用多线程以满足多用户的请求,通过JDBC与后台数据库连接,并通过创建一个 ServerSocket对象来监听来自客户的连接请求,默认端口为8080,然后无限循环调用accept()方法接受客户程序的连接 客户通过Socket(InetAddress,port)建立与服务器的连接。服务器与客户都通过构造 BufferedReader,PrintWriter来建立输入输出流,然后双方通过该输入输出流来相互传递信息,一旦收到客户方的连接请求,服务器 accept()方法返回一个新建的Socket对象。客户端然后向服务器发送消息,比如注册,登录,查找好友等,服务器收到来自客户的请求后,针对不同的消息处理请求, 虽然UDP不可靠但是对于icq可靠性并不太重要,而且UDP快速,所以客户间发送信息通过UDP。用户登录时通过类 DatagramPacket和DatagramSocket创建UDP包括其本地接受端口以及发送端口,默认端口为5000和5001,通过取得的好友的IP地址来向好友发送消息(send(DatagramPacket)和接受消息(receive(DatagramPacket))。当用户通过 UDP收到消息后,可以通过DatagramPacket的方法InetAddress getAddress()得到对方的ip地址,通过对好友列表比较以判断是谁并提示用户收到某某的消息,然后用户选择该用户查看消息,如果好友列表没有该人就显示收到陌生人的消息。用户可以按陌生人按钮查看消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值