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 ) ;
}
}