ICQ

我一直都想编一个自己的聊天软件,像QQ那种;最近有时间我就自己编了一个。编写的过程中收获很大……

现在拿出来跟大家分享,有兴趣的朋友可以和我交流交流。

我编写的这个软件分三步分组成:数据库部分、服务器部分、客户端部分。实现的过程中采用MVC模式。

整个系统中的核心部分在于服务器端接收用户请求、解析请求、处理请求;客户端接收服务器消息、解析消息、处理并显示消息。

下面定义了本系统客户端与服务器端通信的请求码:

客户端请求码与服务器返回结果:
  00:登录  例如:00:123,123    表示用户账号123,密码123请求登录;登录成功服务器会给客户端发送:

>>>00:123,123

>>>001:123,Tom;120,Yuan;124,John;&$119,123;&$120,123,2016-9-11 15:24:11,你好;120,123,2016-9-11 15:25:11,你好;120,123,2016-9-11 15:26:11,你好;

返回的信息被&$分成三段,第一段表示用户本身与好友列表,第二字段表示收到119申请添加好友的请求,第三段表示离线消息。每段内的记录以‘;’分隔;每条记录里的参数以‘,’分隔;

  10:查询与指定好友的历史消息  10:120,119   表示查询120与119的聊天记录;返回示例:

>>>10,120,119

>>>101:120,119,2016-1-12 0:00:00,hello;120,119,2016-8-10 0:00:00,你好;120,119,2016-8-10 0:00:00,你好,我是120;120,119,2016-8-10
0:00:00,nihao;120,119,2016-8-10 0:00:00,nihao;120,119,2016-8-10 0:00:00,nihao;120,119,2016-8-10 0:00:00,213213;119,120,
2016-8-10 0:00:00,你好;119,120,2016-8-10 0:00:00,hello;119,120,2016-8-10 0:00:00,Hi;119,120,2016-8-10 0:00:00,hello
;119,120,2016-8-10 0:00:00,hi;119,120,2016-8-10 0:00:00,哈哈;    每条历史消息以‘;’为间隔。

  11:点对点发msg  11:120,119,2016-7-16 10:10:10,hello    表示120给119发送点对点消息“hello”,时间为2016-7-16 10:10:10
  12:群发好友msg  12:120,120,2016-7-16 11:11:11,大家好,我是120   表示120给所有好友群发消息,与点对点发消息有所不同的是这里的接收方发送方都是自己账号;
  13:删除历史消息  13:120,119  表示120请求删除与119的聊天记录;这里需要注意的一点是,用户删除聊天记录是仅仅是把数据库中消息表中的d字段置0了,用户查询历史聊天记录时也会检查d字段,对于那些d字段为0的消息是检索不到的,就好像自己把它已经删除了一样;
  20:获得好友列表  20:120  表示请求120的好友列表

>>>20:120
>>>201:122,Yaze;123,Tom;130,M; 

  21:添加好友  21:120,130   表示120请求添加130为好友,服务器端就会根据可以请求在数据库表failrelation(未确认好友关系表)中创建一条记录;
  22:删除好友  22:120,119  表示120删除好友119,服务器端根据请求会在relation表中删除相应记录,并对在用用户进行通知;
  23:确认添加好友  23:130,120   表示130同意添加120为好友,服务器端会删除相应的failrelation记录,并在relation中添加一个记录(添加时调整id顺序,使其检索方便,这里是使数值小的id放在前面);
  30:更改用户名  30:120,Yozane,120  表示把账号120的用户名更改为Yozane,返回修改后的用户信息

>>>30:152,jiaGu,170
>>>301:152,jiaGu,170

  31:更改用户密码   30:120,新密码,旧密码

>>>31:152,152,170
>>>301:152,jiaGu,152

  40:注册新用户   40:Tommy,130  表示申请注册用户名为Tommy,密码为130的用户。

示例:

>>>40:Jia,170
>>>401:152,Jia,170

时间: 2024-10-08 07:25:02

ICQ的相关文章

用ASP.Net写一个发送ICQ信息的程序

这里我给大家提供一个很实用的例子,就是在线发送ICQ信息.想一想我们在网页上直接给朋友发送ICQ信息,那是多么美妙的事情啊.呵呵,在吹牛啊,其实ICQ本来就有在线发送的代码,不过,这些都是AOL给你写好的代码,多没有意思啊.还是自已写的比较好,呵呵,废话少说,大家来看代码吧 <% @ Page Langua ge="C#" %> <% @ Assembly Name="System.Net" %> <% @ Import Namespa

苹果笔记本只能上QQ,微信,任何浏览器不能打开网页的问题。

我的笔记本一共遇到过两次这种情况.第一次是浏览器输入域名打不开网页,而输入ip地址可以打开.这就是DNS服务器的问题,解决方法很简单.在系统偏好设置里面找到网络,然后,点击正在连接的网络的高级选项,选择DNS选项,在DNS里面添加一个114.114.114.114,并且置顶.114.114.114.114是比较稳定谷歌DNS服务器,你也可以添加别的VPN服务器,比如阿里巴巴,百度的. 第二次是我用vpnFQ,FQ之后关闭vpn软件,就不能上网了,可以上qq.这回浏览器用ip地址都打不开网页,说明

腾讯qq的发展史

腾讯qq的发展史 即时通信软件的历史并不久远,但是它一诞生,就立即受到网民的喜爱,并风靡全球.    在其发展史上,以色列人功不可没.正是四位以色列籍的年轻人,在1996年7月成立的Mirabilis公司,并于同年11月推出了全世界第一个即时通讯软件ICQ,取意为“我在找你”——“I Seek You”,简称ICQ了.1998年当ICQ注册用户数达到1200万时,被AOL看中,以2.87亿美元的天价买走.目前ICQ有1亿多用户,主要市场在美洲和欧洲,已成为世界上最大的即时通信系统.    腾讯于

XMPP即时通讯

XMPP:XMPP是基于XML的点对点通讯协议,The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议). XMPP可用于服务类实时通讯,表示和需求响应服务中的XML数据元流失传输.XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议. 基本结构. XML是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器

马化腾和他的腾讯帝国

能够打败腾讯的,也只有腾讯.正如大多数业界人士所认同的,如果腾讯自身不出现严重的战略失误,那么未来十年乃至更久,它都将牢牢占据着中国互联网的龙头地位. 文│本刊记者 张兴军 很久以后,有人喜欢对打工皇帝唐骏的书名<我的成功可以复制>进行编辑,然后借以调侃评价腾讯及其创始人:我的复制可以成功.几乎没有人否认,腾讯的成功是从"模仿"开始的,从一款以色列的即时通讯软件ICQ开始,腾讯做了自己的第一款产品OICQ,这就是今天我们大多数人都在使用的QQ前身.正是从这款产品出发,腾讯才

[远程控制软件]VNC/RealVNC-PC版本

网络遥控技术是指由一部计算机(主控端)去控制另一部计算机(被控端),而且当主控端在控制端时,就如同用户亲自坐在被控端前操作一样,可以执行被控端的应用程序,及使用被控端的系统资源.VNC(Virtual Network Computing)最早是一套由AT&T实验室所开发的可操控远程的计算机的软件,其采用了GPL授权条款,任何人都可免费取得该软件.VNC软件主要由两个部分组成:VNC server及VNC viewer.用户需先将VNC server安装在被控端的计算机上后,才能在主控端执行VNC

p2p (对等网络)

对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构[1]  ,是对等计算模型在应用层形成的一种组网或网络形式."Peer"在英语里有"对等者.伙伴.对端"的意义.因此,从字面上,P2P可以理解为对等计算或对等网络.国内一些媒体将P2P翻译成"点对点"或者"端对端",学术界则统一称为对等网络(Peer-to-peer networking)或对等计算(Peer-to-peer compu

很全的linux网络编程技巧

注:作者王晓,本人认为总结得很好,故记之,绝无侵权之意. 1. LINUX网络编程基础知识 1 1.1. TCP/IP协议概述 1 1.2. OSI参考模型及TCP/IP参考模型 1 1.3. TCP协议 3 1.4. UDP协议 5 1.5. 协议的选择 6 2. 网络相关概念 6 2.1. socket概念 7 2.2. socket类型 8 2.3. socket信息数据结构 8 2.4. 数据存储优先顺序的转换 8 2.5. 地址格式转化 9 2.6. 名字地址转化 10 3. sock

Hydra暴力破解工具使用

1      破解telnet服务登陆账号和密码 使用命令:hydra 192.168.43.133 -l telnet -P p.txt telnet 命令解释:被攻击主机IP是192.168.43.133,小写-l 指定登陆账号,大写-L则可以指定文件进行账号破解,大写-P指定要破解的密码字典,如果是用小写-p参数则指定具体的密码.账号破解出来了是telnet,密码也是telnet.也可以用-o参数来指定破解的结果写入到一个文件中去. 2      破解ssh服务登陆账号和密码 使用命令:h