1. 程式人生 > >[網路開發]Raknet文件翻譯(1)

[網路開發]Raknet文件翻譯(1)

開始Raknet
[cpp]
StartupResult RakPeer::Startup( unsigned short maxConnections, SocketDescriptor *

socketDescriptors,unsigned socketDescriptorCount, int threadPriority );
[/cpp]
第一件你應該做的事情是呼叫RakpeerInterface::StartUp()函式,Startup()函式將會:

1.生成RakNet Guid,一個RakpeerInterface的唯一例項,你可以通過下面函式得到這個Guid
[cpp]
RakNetGUID g = rakPeer->GetGuidFormSystemAddress( UNASSIGNED_SYSTEM_ADDRESS );
[/cpp]
2.分配一組可靠的連線點,通過maxConnections引數定義,這個可能是你遊戲中最大的玩家個數,你可能需要分配更多的連線點,手動的控制進入遊戲的玩家。

3.通過socketDescriptors來建立1個或者多個Socket

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

maxConnections 引數

RakNet預先分配了連線到其他系統的記憶體,指定的maxConnections 引數作為在本RakPeerInterface例項和其他RakPeerInterface例項之間最大可支援的連線數(包含進出)。注意:如果你想讓其他系統連線到你,你必須呼叫SetMaximunIncomingConnections( value )函式來設定最大進來的連線數,其中value引數不大於maxConnections值。

socketDescriptors 引數

在95%以上的情況下,你可以如下傳遞引數,
[cpp]
SocketDescriptor( MY_LOCAL_PORT, 0 );
[/cpp]
對於MY_LOCAL_PORT 引數,如何想執行一個Server或者Peer,你必須為想要執行的Server或者Peer設定一個埠。這個是要傳遞給Connect()函式的 remotePort(遠端埠)。如果要隱形一個客戶端,你可以設定一個埠,或者設定為0,讓系統自動選擇一個沒有用到的埠。注意:在Linux系統下設定1000一下的埠必須有管理員許可權。儘管一些埠是保留的,但是無法限制你使用,但是請儘量不要使用。請檢視:http://www.iana.org/assignments/port-numbers

通常你可以建立一組socket描述符。
[cpp]
SocketDescriptor sdArray[2];
sdArray[0].port=SERVER_PORT_1;
strcpy(sdArray[0].hostAddress, “192.168.0.1”);
sdArray[1].port=SERVER_PORT_2;
strcpy(sdArray[1].hostAddress, “192.168.0.2”);
if (rakPeer->Startup( 32, 30, &sdArray, 2 )
OnRakNetStarted();
[/cpp]
此功能是給高階使用者繫結多塊網絡卡設定的功能.例如一塊網絡卡繫結到到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,例如:
[cpp]
socketDescriptor.socketFamily = AF_INET6;
[/cpp]
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上,你需要設定該值為普通執行緒的優先順序的值。