有谁知道浩方平台的原理,请各位踊跃讨论,
解决方案 »
- 对于需要代理才能访问的网站,是否可通过更改本机Host表信息访问?
- 如果判断一个DirectX、OpenGL的游戏窗口
- 应淡月儿要求发帖
- 关于dll传值的问题!正确解决给100
- !!!!!!有没有命令行下的C++源程序格式化/美化工具???谢谢!!!!!!!
- 有关数据库的问题。(200(分)在线等待)
- 怎么设置CListCtrl控件的行高?
- 菜鸟问题: error C2660: 'random' : function does not take 1 arguments
- 关于进程加载基地址的问题!
- vc两个问题,很菜的,进来吧
- 请问:如何从对话框传回一个对象变量呢?
- 一个画圆的难题,请进来看看!
中国互动游戏中心好像原来是替代sock的动态链接库的。
而且必须IPX协议。
IPX over TCP/ip在某个RFC文件中是有描述的。
我的msn:[email protected]
我的QQ:46030459。
很希望和专家们把这个东西研究清楚。
但我敢肯定,绝对不是VPN
我都写的很清楚了,是将IPX包封在TCP中进行的传递,
注意,不是UDP,不是UDP
要搞清楚这个问题,
你应该先弄清楚什么叫IPX包,什么叫IP包,什么叫UDP包,什么叫TCP包,
因为如果你连这个都不清楚,它是什么结构,怎么传递都不明白,
那你是搞不懂这个东西的了,
服务器绝对不会采用UDP,除非程序员发神经了,这种纠错和丢包不是一般的严重,
具体你可以看richard stevens写的网络编程中对UDP在不同速度机器上传递的丢包实验,
该实验告诉我们,在内网,如果机器的速度相差大约2倍,那么UDP丢包概率达到95%以上,
而且你可以连接浩方服务器,用指令看看它打开了那些端口,是TCP还是UDP,
服务器起的作用只是转发包,它不进行任何处理,而解包和压包工作都在客户端,
然后运行游戏如星际,同时用SNIFFER看传递的是UDP还是TCP,
要彻底搞清楚,光会编写程序是不行的,还应该去看低层的网络协议和数据包传递,
各位好运。
浩方原理或许很简单,猜测只是hook+转发。但它决不仅仅是简单的将IPX封装,没有IPX协议的机器上也是可以用浩方的,你也太武断了吧。
不过对于网络估计你也不是很清楚吧
用UDP就是程序员发神经?汗你说Valve的halflife,id的quake,做这些的程序员都发神经?
"在内网,如果机器的速度相差大约2倍,那么UDP丢包概率达到95%以上"
纯粹是瞎说,如果真有这样的实验,你仔细看看它的实验条件,或者看看他的实验年代,网络速度。在内网一般的应用UDP丢包率绝对低于5%
还有看打开端口有什么用。很多程序都是使用TCP+UDP的,例如盛大的泡泡堂,不要看到一个TCP连接就嚷嚷着TCP,TCP的。当然,我不是说浩方就是UDP,只是你不要这么武断。
不过你应该先搞清楚什么是IPX,什么是NETBIOS,为什么没有装IPX的机器上也可以用IPX,
因为这里面MS有很大的贡献的,功劳确实应该归功于MS。首先应该搞清楚的就是这个问题,
而这正是浩方的关键(WDM/VXD捕捉还是HOOK?这个我没搞清楚,但我倾向前者,因为驱动可以解决这个问题,我可以在WIN NT核心编程实现这个功能,但是WIN9X我不知道,请看前面我的帖子)
至于UDP丢包实验,这是在486和SPARC机器上做的,但是和机器速度成正比,
因为在协议剑中,每个SOCKET的缓冲都是有限的,在机器速度相差很大的情况和,
不挺的传送大量数据包会导致缓冲满引起慢的一方大量丢包。
关于在什么情况下用TCP,UDP,你应该看清主题,我们指的是将包封在TCP中还是UDP中来进行传递和为什么是TCP而不是UDP,而不是各种游戏本身是用什么包来传递数据(IPX/TCP/UDP)----这非常重要,不要偏离主题。一般游戏数据是采用TCP传递来保证稳定性,
而广播数据或者没重要信息则可使用UDP来发送。
1)我们要明白,浩方的程序起的作用是让大家的电脑通过INTERNET组成一个大局域网,我们知道TCP和UDP都可以直接在INTERNET上传递,而IPX不可以,而通过游戏我们也可以发现,只有当你选择星际里的IPX或者CS里的局域网游戏的方式,你才能使用浩方提供的功能,而如果选择TCP/IP或者CABLE或者MODEM等,浩方根本不起作用,从这里我们可以判定浩方的作用就是用一定的技术手段在INTERNET上传送IPX包来支持局域网游戏。
2)从1我们可以知道是对IPX进行封包,但为什么是通过TCP而不是UDP来传递呢,我监测了星际的运行,只有大量TCP包(SNIFFER)符合要求,其次richard stevens的经典作品中详细分析了TCP与IP(参考TCP/IP 1,2,3 UNIX网络编程),因为TCP是在系统核心低层进行纠错,而且有流量窗口控制,而UDP没有,必须由应用层来处理,这对服务器进行上百个连接同时进行处理纠错控制是不可想象的,最后我的经验告诉我用的是TCP而不是UDP。
3)为什么不装IPX协议也可以进行连接?为什么QUAKE也可以?
对第一个问题,我上面提到了MS的贡献,我的判断是浩方用了驱动技术(这个原理我知道,但是不知道在WIN98/ME中实现它),而不太可能用HOOK或者替换DLL。对第2个问题,我没有玩过QUAKE,但是我可以确信,即使QUAKE可以支持UDP进行联网游戏,但是在浩方中你必须选择局域网(IPX协议)才能利用浩方进行联网游戏,否则浩方不起作用。
我上次是在网关抓的包,可能是过滤规则里设置有问题,过滤出了另一个游戏的数据包,
这次我在运行游戏的机器上本地检测过滤,
是UDP》TCP包,UDP 2万多,而TCP只有2千多,
所以应该修正为IPX OVER UDP,
抱歉!
IPX OVER UDP来传递数据,
利用另开TCP连接来协助控制UDP包的流量和纠错
这样即利用了UDP高效低开销的优点,而且利用TCP传递纠错数据和流量控制来修补UDP的弱点。
(也许还没有解码和还没有封装的数据不应该叫做ipx数据包) 豪放直接把这些数据用tcp或者udp包装发到目的地,再解码发给游戏,游戏的到的就是一个好象已经解码的ipx数据。当然就可以连接啦。 如果游戏需要接受的是一个封装好的ipx包,如果这种情况也不用安装ipx协议的话,那么就只能说豪放完成了ipx协议该完成的功能,解码和封装。
我觉得 浩方用到了 hook 我对这些不熟 我在unix下面的 最近才开始用vc的那位达人有关于windows hook编程的书不妨共享一下 大家共同讨论一下。
要不程序会因为在初始化的时候出问题
因为没有这个协议支持,
就象你调用TCP你要指定TCP,
而调用其他的(WINSOCK2)如IPX,在初始化的时候调用IPX,不支持就出问题了
不过每个包都要被服务器转发一下,好象不太可能吧。
有点想不清!
真是让人想不通。
可能是水平菜的关系。
1 关于ipx的我没看明白,确实是不懂,才疏学浅
2 我认为服务器的作用除了认证之外,核心的作用也应该是包转发。但是我认为应该是使用udp而不是tcp协议,tcp协议似乎不能支持这么多的用户数量,除非投入太多的服务器
3 如上某个人所说,我想不同的游戏,浩方处理的原理可能会不同其实是不是使用了udp,用软件监测一下应该就能看到的,不过我深入研究过:)