GServer
1.0.0
GServer是可靠的 UDP 網路庫,專為遊戲而設計。其主要優點為:
可靠的 udp (RUDP) 是一種傳輸層協議,專為 TCP 增加過多開銷的情況而設計,但儘管如此,我們仍然需要保證順序的資料包傳送。
RUDP 支援 3 個 mod 及其組合。 GServer 實現了其中一些最有用的功能:
Host 是GServer中的主類別。它提供了接收、發送和處理訊息的方法。訊息在監聽線程中自動接受。
訊息使用“Send”方法發送並使用處理程序進行處理,處理程序由使用者使用“AddHandler”方法註冊。請參閱範例。
訊息用於將資料從一台主機傳送到另一台主機。它有3個參數:
DataStorage 用於將資料序列化為位元組數組。它有 2 個模組:
在唯讀模式下,您可以僅使用從緩衝區讀取資料的 Read 方法。在只寫模式下,您可以僅使用將資料寫入緩衝區的 Write 方法。
處理中...
伺服器
Host host = new Host ( portNumber ) ; //instantiate host on portNumber port
host . StartListen ( numberOfThreads ) ; //StartListen on numberOfThreads threads
Timer timer = new Timer ( o => host . Tick ( ) ) ;
timer . Change ( 10 , 10 ) ; // enables timer tick every 10 milliseconds
客戶
Host host = new Host ( portNumber ) ; //instantiate host on portNumber port
host . StartListen ( numberOfThreads ) ; //StartListen on numberOfThreads threads
Timer timer = new Timer ( o => host . Tick ( ) ) ;
timer . Change ( 10 , 10 ) ; // enables timer tick every 10 milliseconds
host . OnConnect = ( ) => Console . WriteLine ( "Connected" ) ; // connect handler
host . BeginConnect ( serverEndpoint ) ; // connecting to server endpoint
/* host inicialization here */
//add handler to message with id == messageId
//when message with that id will arrive callback will be invoked
//connection - connection associated with sender
host . AddHanlder ( messageId , ( message , connection ) =>
{
/* deserialize message buffer */
/* process message buffer */
/* send response if needed */
} ) ;
class SimpleClass : ISerializable , IDeserializable
{
public int IntField { get ; set ; }
public byte [ ] ByteArray { get ; set } // arraySize = IntField
public byte [ ] Serialize ( )
{
var ds = DataStorage . CreateForWrite ( ) ;
ds . Push ( IntField ) ;
ds . Push ( ByteArray ) ;
return ds . Serialize ( ) ;
}
public void FillDeserialize ( byte [ ] buffer )
{
var ds = DataStorage . CreateForRead ( buffer ) ;
IntField = ds . ReadInt32 ( ) ;
ByteArray = ds . ReadBytes ( IntField ) ;
}
}