QQ登录

只需一步,快速开始

查看: 11020|回复: 7
打印 上一主题 下一主题

flightgear学习_多人飞行

[复制链接]

主题

好友

5111

积分

版主

跳转到指定楼层
楼主
发表于 2016-1-21 11:22:49 |只看该作者 |倒序浏览
本帖最后由 zk_sima 于 2016-1-21 11:24 编辑

Flightgear多人飞行对应的参数是multiplay。
具体参数结构如下:
--multiplay=dir,freq,ip,port  --callsign=your_name
其中callsign代表自己的ID
官方文档上给出的例子是:
For two players on a local network or across the internet:
----------------------------------------------------------
Player1:--multiplay=out,10,192.168.0.3,5500 --multiplay=in,10,192.168.0.2,5501
--callsign=player1
Player2:--multiplay=out,10,192.168.0.2,5501 --multiplay=in,10,192.168.0.3,5500
--callsign=player2

For multiple players on a local network:
----------------------------------------
Player1:--multiplay=out,10,255.255.255.255,5500 --multiplay=in,10,255.255.255.255,5500
--callsign=player1
Playern:--multiplay=out,10,255.255.255.255,5500 --multiplay=in,10,255.255.255.255,5500
--callsign=playern

对于局域网内,2人联机飞行是没问题的,但是多人联机,通过广播的方式通信时会报错!!! 因为在程序内部不能对广播地址进行绑定。
所以文档上关于广播方式联机的例子是有误的。
原因在于,flightgear对于广播地址没有进行判断,直接按照常规地址进行绑定,所以会绑定失败。
对于局域网多人(至少3人)联机飞行,这里给大家提供3种方案:
1.自己单独在一台主机上搭建服务器,目的很简单:数据转发。 所有联机的客户机把--multiplay=out,10,server_ip,5501中的地址设为服务器地址。服务器则把收到的数据发给所有的客户机。
2.通过组播方式进行通信,虽然flightgear(实质是simgear)没有对广播进行特殊处理,但是它能识别组播地址。
3.修改flightgear程序。
对于广域网多人联机飞行,由于路由器一般不支持广播和组播,因此这里提供2中方案:
1.使用flightgear提供的在线服务器,连上去即可
2.自己搭建服务器(思路与局域网方案1一致),但是服务器需要固定IP

下面来分析如果修改flightgear程序来达到联机飞行的目的:
multiplay主要是有FGMultiplayMgr子系统来管理的,根据前面分析,对于子系统的处理主要是以下几个过程:
bind()
init()
update()
shutdown()
FGMultiplayMgr的重点是init:
init进行以下几个处理:
mSocket.reset(new simgear::Socket());
mSocket->open(false)
mSocket->setBlocking(false);
mSocket->bind(rxAddress.c_str(), rxPort)
这几个处理没有判断地址的类型,因此在bind阶段就会出现广播地址绑定失败!
为了解决这个问题,可以把以上过程改成以下过程:
mSocket.reset(new simgear::Socket());
mSocket->open(false)
mSocket->setBlocking(false);
mSocket->setBroadcast(true);
mSocket->bind(“0.0.0.0.”, rxPort)


END
By:zk_sima
email:zk.sima@gmail.com

分享到: QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏1

主题

好友

32

积分

报考学院待录取

沙发
发表于 2016-1-22 11:06:30 |只看该作者
绝对好帖,我试了广播模式,绑定不了,一直找不到原因,今天终于释疑了
回复

使用道具 举报

主题

好友

86

积分

航院新生

板凳
发表于 2016-4-3 23:23:40 |只看该作者
非常感谢!!!!:):):)
回复

使用道具 举报

主题

好友

15

积分

报考学院待录取

地板
发表于 2017-2-19 20:35:19 |只看该作者
非常感谢楼主的介绍!!!!
回复

使用道具 举报

主题

好友

35

积分

报考学院待录取

5#
发表于 2018-7-25 09:31:30 |只看该作者
感谢楼主。第一次接触FlightGear,还有很多要学
回复

使用道具 举报

主题

好友

35

积分

报考学院待录取

6#
发表于 2018-7-25 09:32:23 |只看该作者
非常感谢楼主。第一次接触FlightGear,还有很多要学。
回复

使用道具 举报

主题

好友

35

积分

报考学院待录取

7#
发表于 2018-7-25 09:32:47 |只看该作者
非常感谢楼主。第一次接触飞行模拟器,还有很多要学。
回复

使用道具 举报

主题

好友

35

积分

航院新生

8#
发表于 2019-1-8 11:22:39 |只看该作者
收藏学习了,感谢分享!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入FG

本版积分规则

手机版|联系我们| FlightGear ( 吉ICP备19002044号-7 )

GMT+8, 2024-4-25 09:00

Powered by Discuz! X3.2

© 2001-2013 FlightGear Inc.

返回顶部