局域网游戏联机原理
答案:2 悬赏:0 手机版
解决时间 2021-01-04 17:52
- 提问者网友:你独家记忆
- 2021-01-03 19:40
我们平时所玩的CS,或者星际争霸.请问不同地方的两个人怎么就能一起玩了.联机游戏的原理是什么呢?有没有这方面的高手.小弟想请教.
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-01-03 19:45
以游戏War3魔兽争霸为例:
1、首先是如何看见主机的问题:
魔兽是通过TCP/UDP协议进行数据发送的:每个机器监听一个固定的UDP端口(比如6112),一旦任何机器建立主机,它就向整个局域网所有的机器的6112端口广播“我建立了主机”的信息,这样,其他机器接收到这个信息,就知道有主机建立了(广播只存在于UDP协议,使用UDP.sendto向地址255.255.255.255实现)。
2、如何加入游戏:
魔兽在加入游戏后使用TCP协议,每个玩家对应一个连接。
在真正的局域网中,一个玩家看到和选择一个主机后点击加入,他的机器会使用TCP请求和对方连接,(地址从UDP中获得,端口是固定的6112),如果没有人满,被主机关闭等意外发生,主机就会答应此连接(使用TCP.accept),发送些数据(地图信息,其他玩家信息等),此玩家就加入了游戏,此后两机器就使用这个TCP连接通讯。
3、平台采用了这样的办法:
TCP连接是靠TCP.connect发起的,平台挂钩住这个函数,把连接向服务器的地址修改为自己(即127.0.0.1或实际IP,一般用前者),然后再挂钩TCP.accept函数(此函数用来接受TCP连接),然后发送同样的连接请求由服务器转到另一台机器(即主机),根据那台机器的做法决定是否答应127.0.0.1的那个TCP.connect,(注意这个TCP.accept返回的新连接是挂钩代码创建的,挂钩的代码拥有它收到的所有数据),
接着,挂钩代码把这些数据重新打包(例如{接收方机器的虚拟IP+发送数据+发送方的虚拟IP}的形式),使用UDP.sendto发到服务器,服务器从信息中获得接收方机器的虚拟IP,查找其真正的IP,并把数据发送过去,跨网的TCP发送就完成了。
1、首先是如何看见主机的问题:
魔兽是通过TCP/UDP协议进行数据发送的:每个机器监听一个固定的UDP端口(比如6112),一旦任何机器建立主机,它就向整个局域网所有的机器的6112端口广播“我建立了主机”的信息,这样,其他机器接收到这个信息,就知道有主机建立了(广播只存在于UDP协议,使用UDP.sendto向地址255.255.255.255实现)。
2、如何加入游戏:
魔兽在加入游戏后使用TCP协议,每个玩家对应一个连接。
在真正的局域网中,一个玩家看到和选择一个主机后点击加入,他的机器会使用TCP请求和对方连接,(地址从UDP中获得,端口是固定的6112),如果没有人满,被主机关闭等意外发生,主机就会答应此连接(使用TCP.accept),发送些数据(地图信息,其他玩家信息等),此玩家就加入了游戏,此后两机器就使用这个TCP连接通讯。
3、平台采用了这样的办法:
TCP连接是靠TCP.connect发起的,平台挂钩住这个函数,把连接向服务器的地址修改为自己(即127.0.0.1或实际IP,一般用前者),然后再挂钩TCP.accept函数(此函数用来接受TCP连接),然后发送同样的连接请求由服务器转到另一台机器(即主机),根据那台机器的做法决定是否答应127.0.0.1的那个TCP.connect,(注意这个TCP.accept返回的新连接是挂钩代码创建的,挂钩的代码拥有它收到的所有数据),
接着,挂钩代码把这些数据重新打包(例如{接收方机器的虚拟IP+发送数据+发送方的虚拟IP}的形式),使用UDP.sendto发到服务器,服务器从信息中获得接收方机器的虚拟IP,查找其真正的IP,并把数据发送过去,跨网的TCP发送就完成了。
全部回答
- 1楼网友:像个废品
- 2021-01-03 20:36
fps类:无主之地 无主之地2 求生之路2 战地系列 生化危机:涴熊市行动(联机玩玩还是不错的)
rpg类:暗黑3 火炬之光2(这个官方说将支持局域网) 泰坦之旅
桌游类:三国杀 萨兰王法典 鬼戏 风声 逍遥游
近期给力的新游戏确实不多,能满足你要求的也很少。望采纳。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯