CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

研究QQ的实现原理!

楼主funboy88(司令)2002-06-14 17:00:36 在 VB / 基础类 提问

我是想实现QQ的原理  
  客户端有两个WINSOCK  
  一个是TCP的,与服务器连接,随时得到在线人数  
  一个是UDP的,用来发送信息给在线用户  
  TCP方式的是正常,但是用UDP的,  
  发送信息的时候就出现那个"连接远端被重置"的错误  
   
   
  是不是因为UDP方式的时候没有得到代理服务器内的IP  
   
  大家介绍一下QQ在局域网中是如何用UDP方式的, 问题点数:200、回复次数:14Top

1 楼funboy88(司令)回复于 2002-06-14 18:07:13 得分 0

没有人解决嘛?  
   
  我以前和朋友讨论过,只是在自己做的时候遇到局域网的用户的时候没法解决  
  它是客户端到服务器用TCP方式  
  客户端到客户端是UDP方式  
  当两客户端相互发信息时,在线就用UDP方式发送过去,不在线,就用TCP方式发送到服务器存在数据库中,当对方下次来的时候就在登录的时候检测是不否有旧信息,有,就发送过去  
   
  现在我遇到的问题主要就是UDP如何获得局域网的IP  
  通过代理上网的用户的IPTop

2 楼Dickson(沧海冷心)回复于 2002-06-14 18:14:48 得分 30

先做一个模块,来解决局域网IP问题,  
  具体是这样的:  
  客户一上线,便把IP用TCP发到主机,一旦有UDP   TO   UDP,  
  就用主机先把IP发去,然后再用UDP连接Top

3 楼dgz01(打工者)回复于 2002-06-14 18:26:57 得分 10

?Top

4 楼bakw(好好潜水,天天UP)回复于 2002-06-14 19:02:36 得分 80

<<<<<<<<<<<<<<<<<<<<<<<<<<<<       看看这个       >>>>>>>>>>>>>>>>>>>>>>>>>  
   
  OICQ服务器系统通讯协议  
  协议说明:  
  协议由报文头(T)+发送者(T)+接收者(T)+报文类型(T)+报文长度(L)+报文内容组成  
  发送者和接收者是系统内的程序种类,OICQ服务器0x01,传真服务器0x02,WEB服务器0x03,打印服务器是0x04,聊天服务器是0x05,OICQ用户是0x0A。  
   
  OICQ用户到OICQ服务器的通讯协议   引导符   (0x81+0x0A+0x01)  
  报文类型   报文内容   报文说明  
   
  0x01   昵称(S)+肖像(M)+用户密码(S)+性别(T)+年龄(T)+真实姓名(S)+国家/地区(T)+省(T)+市(S)+地址(S)+邮编(S)+学历(T)+毕业院校(S)+职业(T)+电话(S)+寻呼(S)+电邮(S)+爱好(S)+说明(S)+身份验证(T)   新用户注册,身份验证用于当有人要将他加入好友时询问是否允许  
  0x02   服务号(L)+密码(S)+注册方式(T)   老用户注册,方式分为0正常,1隐身  
  0x03   服务号(L)+对方服务号(L)+内容(S)   发送信息到某人  
  0x04   服务号(L)+组号(L)+内容(S)   广播信息,组号=0为全体  
  0x05   服务号(L)+朋友服务号(L)   查看朋友资料  
  0x06   服务号(L)+组名称(S)   增加组  
  0x07   服务号(L)+组编号(T)+组名称(S)   修改组名称  
  0x08   服务号(L)+组编号(T)   删除组  
  0x09   服务号(L)+移动人数(T)+{朋友服务号(L)+目的组号(T)}   移动组成员  
  0x0a   服务号(L)+起始编号(L)+回传个数(T)+查找标志(T)   看谁在线上  
  查找标志   1=向小找   2=向大找  
  0x0b   服务号(L)+SQL语句(S)   自定义查找  
  0x0c   服务号(L)+朋友服务号(L)   增加好友  
  0x0d   服务号(L)+朋友服务号(L)+加入原因(S)   请求加入好友  
  0x0e   服务号(L)+朋友服务号(L)   删除好友  
  0x10   服务号(L)+显示模式(T)   更改显示方式   1上线2隐藏3免打扰4离线  
  0x11   服务号(L)+监视服务号(L)   监视某人谈话  
  0x12   服务号(L)+昵称(S)+肖像(M)+用户密码(S)+性别(T)+年龄(T)+真实姓名(S)+国家/地区(T)+省(T)+市(S)+地址(S)+邮编(S)+学历(T)+毕业院校(S)+职业(T)+电话(S)+寻呼(S)+电邮(S)+爱好(S)+说明(S)+身份验证(T)   更改用户基本信息  
  0x13   服务号(L)+朋友服务号(L)+文件名(S)+文件长度(L)   请求发送文件  
  0x14   服务号(L)+朋友服务号(L)+允许/拒绝   是否允许发送文件  
  0x15   服务号(L)+朋友服务号(L)+文件内容(B)   发送文件  
  0x16   服务号(L)   连接测试报文    
  0x17   服务号(L)+朋友服务号(L)+同意标志(T)   应答对方请求加入好友    
  0=拒绝  
  1=同意  
   
   
   
  OICQ服务器到OICQ的通讯协议  
  报文类型   报文内容   报文说明  
  0x01   成功/失败(T)+服务号(L)   新用户注册结果返回  
  0x02   成功/失败(T)+组个数(T)+{组名称(S)+组编号(T)+朋友个数(T)+{朋友服务号(L)+肖像编号(T)+朋友状态(T)+朋友昵称(S)}}   老用户注册结果返回  
  朋友状态  
  1=上线=2隐藏=3免打扰4离线  
  0x03   标志(T)   +   朋友服务号(L)+信息(S)+信息类型(T)   标志   1=系统   2=用户  
  发送消息,服务号=0是系统消息    
  1=用户某某已经把你加为好友  
  2=用户某某请求你通过身份验证  
  3=用户某某同意了你的验证要求  
  4=用户某某拒绝了你的验证请求  
  0x04   成功/失败(T)+朋友服务号(L)+昵称(S)+肖像(M)+性别(T)+年龄(T)+真实姓名(S)+国家/地区(T)+省(T)+市(S)+地址(S)+邮编(S)+学历(T)+毕业院校(S)+职业(T)+电话(S)+寻呼(S)+电邮(S)+爱好(S)+说明(S)   朋友信息回送  
  0x05   成功/失败(T)+组编号(T)+组名称(S)   增加组结果回送   1/0  
  0x06   成功/失败(T)+组编号(T)+组名称(S)   修改组名称结果回送1/0  
  0x07   成功/失败(T)+组编号(T)   删除组结果回送1/0  
  0x08   成功/失败(T)   移动组成员结果回送1/0  
  0x09   成功/失败(T)+在线个数(T)+{服务号(L)+昵称(S)+肖像(M)+省(T)+市(S)}   查找在线人员结果回送  
  0x0a   成功/失败(T)+找到个数(T)+{服务号(L)+昵称(S)+肖像(M)+省(T)+市(S)}   自定义查找结果回送(最多50)  
  0x0b   标志(T)+朋友服务号(L)   增加好友结果回送标志  
  0=数据库失败    
  =1成功  
  =2需要身份验证  
  =3对方不允许加入  
  =4需要身份验证且不在线  
  0x0c   朋友服务号(L)+昵称(S)+肖像号(M)+朋友状态(T)   给在线用户增加好友  
  0x0e   成功/失败(T)+朋友服务号(L)   删除好友结果回送  
  0x10   服务号(L)+显示模式(T)   显示模式回送   =1上线=2隐藏=3免打扰4离线  
  0x11   成功/失败   更改用户基本信息结果回送  
  0x12   朋友服务号(L)+文件名(S)+文件长度(L)   请求发送文件  
  0x13   朋友服务号(L)+允许/拒绝   是否允许发送文件   1允许   0拒绝  
  0x14   朋友服务号(L)+文件内容(B)   发送文件  
  0x15   朋友服务号(L)+当前状态(T)   朋友状态回送(系统发送)=1上线=2隐藏=3免打扰4离线  
  0x16   服务号(L)   连接测试Top

5 楼funboy88(司令)回复于 2002-06-21 15:25:23 得分 0

没有高手来回答的呀Top

6 楼funboy88(司令)回复于 2002-06-21 15:26:27 得分 0

没有高手来回答的呀Top

7 楼vbfdy(地下铁的流浪者)回复于 2002-06-21 15:35:50 得分 10

我昏!看不懂!!!!!!!!!!Top

8 楼softrain(曾经的月光,现在的日光)回复于 2002-06-21 16:23:53 得分 10

我昏倒在地,幸亏被同事一盆冷水浇醒!Top

9 楼kuangxiang007(brothers,together up!)回复于 2002-06-21 17:07:04 得分 10

我以為就只有我暈﹐還好醒來看下去還有兩個Top

10 楼KAIBate(凯)回复于 2002-06-21 17:31:28 得分 10

啊。。。厉害,Top

11 楼hengxin54(火星)回复于 2002-06-21 18:14:28 得分 10

我也在等待这个问题的答案Top

12 楼QQRN(笨QQ-馊主意提供者)回复于 2002-06-21 18:14:39 得分 10

了解……就是传输数据格式啦……Top

13 楼lonelystarcn(虫虫)回复于 2002-06-21 18:38:20 得分 10

UDP协议在同一台计算机中是不允许两个以上的WINSOCK设置成同一端口的,而QQ中却能够在同台计算机中与相通信,难道它的端口不固定???Top

14 楼funboy88(司令)回复于 2002-06-23 13:06:24 得分 0

还有没有人讨论的呀,要不就结帐了呀Top

15 楼kofkim(小金)回复于 2002-06-23 13:27:43 得分 10

我觉得,这个问题的解决你必须先看TCP/IP详解这本书!  
   
  这个论坛没有这种高手的!真的`Top

相关问题

  • 研究QQ的实现原理
  • 研究QQ的原理
  • QQ实现传输的原理
  • 有关QQ宠物外挂的实现原理,知道的进来聊聊
  • QQ原理探讨?
  • 【高手指教】请教qq魔法表情的实现原理的delphi实现~ 分不够再加~
  • qq的显ip补丁以及其它补丁是如何实现的,讲原理也可.
  • VMware的实现原理?
  • Visual Assist 的实现原理?
  • 高分急请帮我解说一下课题《概念形成原理的研究和实现》----人工智能方向的

关键词

  • 服务器
  • 局域网
  • ip
  • 客户
  • 用户
  • 协议
  • 解决
  • 注册
  • 连接
  • 内容

得分解答快速导航

  • 帖主:funboy88
  • Dickson
  • dgz01
  • bakw
  • vbfdy
  • softrain
  • kuangxiang007
  • KAIBate
  • hengxin54
  • QQRN
  • lonelystarcn
  • kofkim

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo