war3的局域网对战很怪   
A建一个房间 
B进去就是     B connect A  
当C再进入 就是C connect A  C connect B 
D进去就是     D connect A  D connect B  D connect C  
不是所有的都connect A
拦截CONNECT函数好像并不能实现多人对战   
VS HF QQ平台等都是怎么实现的? 
VS用冰刃看端口  比局域网多了几个端口 好像不是网上说的什么VPN技术实现的大家可以给给思路吗?

解决方案 »

  1.   

    他实现做成网状是必要的 不然开了游戏之后 建立游戏的人挂了 所有人都找不到别人了
    那个实现估计是hook了一些socket函数 把同房的人虚拟成在同一个局域网内
      

  2.   

    协议转换是肯定有的。。但是奇怪的是网上邻居不受影响。。(应该只对固有程序进行协议转换)。。从而将局域网之间通过TCP连接起来了。这点跟VPN很像。。
      

  3.   

    我都只是猜测 他只HOOK特定进程的socket函数 当然不会影响到别的进程比如EXPLORER
      

  4.   

    关键技术不是实现原理,而是在于数据包大小优化和数据包发送延时优时,假如你人优化不好的话,就算两个游戏能连接上也不玩不了,我就卡这里了,扔了好久也没有做了!延时大时达到600MS,玩游戏起码保证在100MS左右才能玩的
      

  5.   

    虚拟的ipx,就是用upd或者ipx协议转成虚拟的ipx协议还有他的ipx协议是动态生成的。
      

  6.   

    应该是 hook api 
    所以只对自己产生影响, 如果全局vpn那还得了?!
      

  7.   

    虚拟局域网
    如果你要写的话可以这样:写一个客户端/服务器程序,每个客户端把自己的IP告诉服务器并由服务器告知其他客户端,然后服务器给每个客户端分配一个局域网地址192.168.1.?也告诉每个客户端,这样每个客户端就知道自己的IP和自己在虚拟局域网内的IP。
    具体发送的时候,每个客户端需要把魔兽要发送的数据报捕获,并把它们打包,然后用TCP协议发送到其他客户端,那些客户端接收到信息就解包然后发送给自己的魔兽程序。
    具体的问题应该还有很多,但是总的办法就是截获魔兽发到虚拟局域网的数据并用TCP传播到其他客户端,让魔兽始终感觉自己在一个局域网内。
    当然VPN等应该也可以,不过需要配置。
    一个思路而已,仅供参考。
      

  8.   

    vpn都可以实现
    用户登陆以后就相当于在同一个局域网内。
    为什么vs或则浩方要指定游戏的运行程序,比如魔兽争霸。war3.exe,你运行的时候就直接hook到了war3.exe所用端口然后再做nat。
      

  9.   

    确实是啊,浩方客户端下面有个GameStatWar3.dll模块。功能就是InstallHook和UnInstallHook。
      

  10.   

    我这有份源代码,不过是Delphi实现的,Lz需要的话可以给你
      

  11.   

    帖个链接GX
    http://download.csdn.net/source/1496640