[网络开发]Raknet文档翻译(1)——Startup

作者: NickYang 分类: 技术文章,程序开发 发布时间: 2012-04-08 19:05

开始Raknet

第一件你应该做的事情是调用RakpeerInterface::StartUp()函数,Startup()函数将会:

1.生成RakNet Guid,一个RakpeerInterface的唯一实例,你可以通过下面函数得到这个Guid

2.分配一组可靠的连接点,通过maxConnections参数定义,这个可能是你游戏中最大的玩家个数,你可能需要分配更多的连接点,手动的控制进入游戏的玩家。

3.通过socketDescriptors来创建1个或者多个Socket

在调用Startup()函数之前,通常只有原始的UDP函数可以使用,比如:Ping(), AdvertiseSystem(),SendOutOfBand().

 

maxConnections 参数

RakNet预先分配了连接到其他系统的内存,指定的maxConnections 参数作为在本RakPeerInterface实例和其他RakPeerInterface实例之间最大可支持的连接数(包含进出)。注意:如果你想让其他系统连接到你,你必须调用SetMaximunIncomingConnections( value )函数来设置最大进来的连接数,其中value参数不大于maxConnections值。

 

socketDescriptors 参数

在95%以上的情况下,你可以如下传递参数,

对于MY_LOCAL_PORT 参数,如何想运行一个Server或者Peer,你必须为想要运行的Server或者Peer设置一个端口。这个是要传递给Connect()函数的 remotePort(远程端口)。如果要隐形一个客户端,你可以设置一个端口,或者设置为0,让系统自动选择一个没有用到的端口。注意:在Linux系统下设置1000一下的端口必须有管理员权限。尽管一些端口是保留的,但是无法限制你使用,但是请尽量不要使用。请查看:http://www.iana.org/assignments/port-numbers

通常你可以创建一组socket描述符。

此功能是给高级用户绑定多块网卡设定的功能.例如一块网卡绑定到到Lan后的安全服务器,而另外一块网卡绑定到到Internet,为了访问不同的绑定组,你可以穿衣绑定的索引值给有connectionSocketIndex参数的RakPeerInterface 函数。

IPV6是一个新的网络协议,代替了例如 94.198.81.195 这样的IP地址,你可以使用如fe80::7c:31f7:fec4:27de:14 的地址,4字节的编码方式被16字节的编码方式代替了,所以IPV6用于游戏上不太适合。从正面来说,因为有足够的地址,路由器不需要创建地址映射,所以IPV6不需要NAT穿透。

IPV6默认是不可用的,为了支持IPV6,可以设置 socket的族群为AF_INET6,例如:

IPV6只能连接其他IPV6 socket,同样的,默认的IPV4也只能连接到其他的IPV4 socket。

 

threadPriority (线程优先级)

对于windows操作系统,这个参数是RakPeer更新线程传递给_beginthreadex()函数的优先级。对于Linux系统,这个参数是传递给pthread_attr_setschedparam()函数,用于pthread_create()函数。默认的参数是 -99999,在windows上意味着使用优先级0(NORMAL_PRIORITY),而在Linux上意味着使用优先级为1000。在windows上默认的优先级就可以了,在Linux上,你需要设置该值为普通线程的优先级的值。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

2条评论
  • kid桑

    2012 年 5 月 23 日 23:49

    您好,看到了你在chidongxi.me中的留言。chidongxi.me是由个人爱好搭建起来的站点,从几个觉得比较好的博客的rss中提取内容呈现,希望可以方便地看到大家的文章。我们已经在文章的开头和结尾分别列出了原网址,不过可能由于rss的原因网址显示得不太一致。另还有个不情之请,希望博主能将rss设置为显示全文。重要的是知识,而不是点击量 🙂

    潜水 Chrome浏览器 Windows 7 x64 Edition
    1. eliteYang

      2012 年 5 月 24 日 00:34

      谢谢访问,RSS的东西我会修改的,谢谢提醒。

      神话 Chrome浏览器 Windows 7

发表评论

电子邮件地址不会被公开。 必填项已用*标注