关于OICQ的实现问题!(我所能给的最高分了) 我做了个OICQ的界面,欢迎到 http://shines.yeah.net 参观,关于OICQ的讨论我很感兴趣,我知道一些,但不知道能不能保证几十万人,我用Winsock API的UDP协议和少量TCP/IP结合。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我认为OICQ是使用了负载均衡的技术,就是用多台服务器分担用户。这样的话每台服务器所承受的用户数目就可以大大的降低。大型的网站也是采用这种技术的。 NetMan1999: 我的ICQ是VB做的,当然现在只是界面而已,没有太多时间去做。 icq分为服务器端和客户端,支持海量客户的功能是服务器的事情。VB只能用来实现客户端程序,一般也就同时和几个人通讯。服务器端程序绝对不会是用VB写的。playpcgame的说法是对的,webmail也是采用这种技术。 不仅仅服务器端不要用VB写,客户端也不要用VB写。playpcgame的说法相当准确。而且服务器对于网与网之间的处理是有区别的,比如163-169, 169-163。如此的技巧还有一些。你注意观察一下OICQ,或者用一些OICQ工具一样可以检测,(OICQ UDP三秒发送一次信息,如果处理169的问题),祝你好运。因为如果双方都是163的时候是可以直接发的,169与163之间的信息有一半是需要服务器中转的。 oicq的客户端其实不就是用delphi写的吗?不过用vb其实也可以实现,只是可用的控件太少了. 哈哈,恰好我刚做好一套ICQ系统 -- 是给公司做的。服务器和客户端都是VB6的。当然我担心服务器撑不住大用户,正用VC重做。但目前是用的非阻塞模式,甚至多线程都没用,全靠ACTIVEX事件驱动 -- 它本身就多线程了,无论是数据库操作还是网络几乎都能立即返回,速度照样很快。基本原理上是全部使用UDP协议,这样就能轻易的解决代理服务器的问题。但UDP协议很不稳定,必须加重包和丢包、错包校验。服务器端UDP端口固定为8000,客户端随机分配,服务器端必须保存登陆用户的IP&PORT甚至我连传输文件都用UDP协议,自己做的快速校验和自动续传程序,速度反而比OICQ的TCP快了,而且再也不需要设置什么SOCK5了 :)而且这样的好处是节省端口资源 -- 无论是C还是S,都只用一个UDP端口!VB的缺点是没有结构体联合体,我用TYPE语句和一个未公开的RlfMoveMemory实现那些复杂的自定义协议,把文件传输、注册、消息等等都统一成一种数据格式发送。当然还有一些细节,比如消除UNICODE转换造成的尾部乱码。客户端的最大难点大概就是界面了,ACTIVEBAR可以做出来,但我不用 -- 我自己做的用户控件,因为ACTIVEBAR不稳定而且有版权问题。自己做的控件更灵活更快速,而且还是纯VB代码!也不过就是动态按钮和明暗线的组合,以及一个时钟(滑动翻页用)。客户端做出来十几个窗体文件 :P唯一使用的第三方控件是POWERTCP,代替MSWINSOCK,因为微软的MSWINSOCK实在太差了,我差点想用API实现winsock…… 我有icq的通讯协议,有兴趣来信吧,看后定会有启发。[email protected] to flywhc:欢迎你去回答http://expert.csdn.net/TopicView.asp?id=29333的问题,高分等你拿! ppc207给我也寄一份到[email protected] 在VB.net中如何让panel控件和按钮控件半透明 vb 在文本文件每行前加上时间(时间从00:00分开始) 出大事啦~!谁来救救我啊!!跪求高手来指点! 100分寻高手指导!!!!"用水晶报表设计的报表换了台机器无法使用" 在线等!!!! [高难度]如何捕获IE浏览器的事件,如在IE里单击下载。 怎么设置MSFlexGrid控件中单元格中的内容的对齐方式 picturebox控件问题 关于检查是否有游戏全屏窗口的问题 另外,关于MSGBOX的问题 win10上安装VB6企业版出现问题怎么办 VB,表达式计算函数! 这道题几乎是送分的!!!!!!!!
大型的网站也是采用这种技术的。
服务器端程序绝对不会是用VB写的。playpcgame的说法是对的,webmail也是采用这种技术。
不过用vb其实也可以实现,只是可用的控件太少了.
当然我担心服务器撑不住大用户,正用VC重做。但目前是用的非阻塞模式,甚至多线程都没用,
全靠ACTIVEX事件驱动 -- 它本身就多线程了,无论是数据库操作还是网络几乎都能立即返回,速度照样很快。
基本原理上是全部使用UDP协议,这样就能轻易的解决代理服务器的问题。
但UDP协议很不稳定,必须加重包和丢包、错包校验。
服务器端UDP端口固定为8000,客户端随机分配,服务器端必须保存登陆用户的IP&PORT
甚至我连传输文件都用UDP协议,自己做的快速校验和自动续传程序,速度反而比OICQ的TCP快了,而且再也不需要设置什么SOCK5了 :)
而且这样的好处是节省端口资源 -- 无论是C还是S,都只用一个UDP端口!
VB的缺点是没有结构体联合体,我用TYPE语句和一个未公开的RlfMoveMemory实现那些复杂的自定义协议,把文件传输、注册、消息等等都统一成一种数据格式发送。当然还有一些细节,比如消除UNICODE转换造成的尾部乱码。客户端的最大难点大概就是界面了,ACTIVEBAR可以做出来,但我不用 -- 我自己做的用户控件,
因为ACTIVEBAR不稳定而且有版权问题。自己做的控件更灵活更快速,而且还是纯VB代码!
也不过就是动态按钮和明暗线的组合,以及一个时钟(滑动翻页用)。
客户端做出来十几个窗体文件 :P
唯一使用的第三方控件是POWERTCP,代替MSWINSOCK,因为微软的MSWINSOCK实在太差了,我差点想用API实现winsock……
[email protected]
欢迎你去回答http://expert.csdn.net/TopicView.asp?id=29333的问题,高分等你拿!