Пример #1
0
 /// <summary>
 /// 序列化数据.
 /// </summary>
 /// <param name="mod">数据对象.</param>
 private byte[] Serialize(NetModel mod)
 {
     try {
         //内存流实例
         using (MemoryStream ms = new MemoryStream()) {
             //ProtoBuf协议序列化数据对象
             ProtoBuf.Serializer.Serialize <NetModel> (ms, mod);
             //创建临时结果数组
             byte[] result = new byte[ms.Length];
             //调整游标位置为0
             ms.Position = 0;
             //开始读取,从0到尾
             ms.Read(result, 0, result.Length);
             //返回结果
             return(result);
         }
     } catch (Exception ex) {
         MyGameServer.LogInfo("Error: " + ex.ToString());
         return(null);
     }
 }
Пример #2
0
 /// <summary>
 /// 反序列化数据.
 /// </summary>
 /// <returns>数据对象.</returns>
 /// <param name="data">源数据.</param>
 private NetModel DeSerialize(byte[] data)
 {
     try
     {
         //内存流实例
         using (MemoryStream ms = new MemoryStream(data))
         {
             //调整游标位置
             ms.Position = 0;
             //ProtoBuf协议反序列化数据
             NetModel mod = ProtoBuf.Serializer.Deserialize <NetModel>(ms);
             //返回数据对象
             return(mod);
         }
     }
     catch (Exception ex)
     {
         MyGameServer.LogInfo("Error: " + ex.ToString());
         return(null);
     }
 }
Пример #3
0
    public override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, MyPeer peer)
    {
        switch (operationRequest.OperationCode)//通过OpCode区分请求
        {
        case 1:
            Dictionary <byte, object> data = operationRequest.Parameters;
            object intValue;
            object stringValue;
            data.TryGetValue(1, out intValue);
            data.TryGetValue(2, out stringValue);
            MyGameServer.LogInfo("服务器:得到客户端传来的参数数据是:" + intValue.ToString() + "  " + stringValue.ToString());

            //向客户端作出响应
            OperationResponse opResponse = new OperationResponse(1);

            //向客户端发送参数
            Dictionary <byte, object> data2 = new Dictionary <byte, object>();
            data2.Add(1, 300);
            data2.Add(2, "服务器:给客户端发送参数数据");
            opResponse.SetParameters(data2);
            peer.SendOperationResponse(opResponse, sendParameters);    //给客户端一个响应,只能在这里调用,在其它地方无效

            ///客户端在没有向服务器端发送请求,但服务器端想通知或发送数据给客户端时,就可以使用SendEvent方法,
            ///SendEvent方法可以在服务器任何地方调用。
            //EventData ed = new EventData(1);
            //ed.Parameters = data2;
            //SendEvent(ed, new SendParameters());
            break;

        case 2:
            break;

        default:
            break;
        }
    }
Пример #4
0
 public void Stop()
 {
     MyGameServer.LogInfo("SyncPositionThread Stop");
     stopState = true;
 }
 public override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, ClientPeer peer)
 {
     MyGameServer.LogInfo("Execute DefaultHandler OperationCode = " + operationRequest.OperationCode);
 }