/// <summary>
        /// 接收到请求的处理
        /// </summary>
        /// <param name="info"></param>
        private void client_OnMsgReceived(byte[] info)
        {
            SocketRequest requestMsg = ByteSerializer.DeserializeByte <SocketMsgBase>(info) as SocketRequest;

            if (requestMsg != null)
            {
                Console.WriteLine("子系统{0}请求执行{1}方法", requestMsg.SubSystem, requestMsg.RequestMethod);
                SocketResponse response = new SocketResponse();
                string         result   = string.Empty;
                try
                {
                    result          = OperationFactory.Execute(requestMsg.Parameters, requestMsg.RequestMethodType);
                    response.Result = result;
                }
                catch (Exception ex)
                {
                    response.ErrorMsg = "执行遇到异常";
                }
                response.MethodName = requestMsg.MethodName;
                response.Sender     = requestMsg.Target;
                response.SubSystem  = requestMsg.SubSystem;
                response.Target     = requestMsg.Sender;
                response.MsgType    = TcpMsgDataType.Relay;

                client.Send(ByteSerializer.ObjectToByte(response));
                Console.WriteLine("执行成功,已返回结果");
            }
        }
        private void client_OnServerConnected(object sender, TcpServerConnectedEventArgs e)
        {
            //链接成功,向服务器发送学校编号。
            SocketMsgBase baseMsg = new SocketMsgBase();

            baseMsg.LinkType  = "1";
            baseMsg.MsgType   = TcpMsgDataType.ClientToken;
            baseMsg.Sender    = schoolNum;
            baseMsg.SubSystem = TcpSeatManageSubSystem.SocketClient;
            client.Send(ByteSerializer.ObjectToByte(baseMsg));
        }
Exemplo n.º 3
0
 /// <summary>
 /// 转发socket消息 ,
 /// </summary>
 /// <param name="uid">请求的目标ID。</param>
 /// <param name="msg">如果msg类型为Request,即客户端请求学校,需要转发给学校。否则为学校响应客户端的请求。</param>
 private void RelaySocketMsg(string uid, SocketMsgBase msg)
 {
     try
     {
         msg.Sender = uid;
         if (schoolNums.ContainsKey(msg.Target))
         {
             server.Send(schoolNums[msg.Target], ByteSerializer.ObjectToByte(msg));
             Console.WriteLine("{0:M} {1:t}:转发给目标{2},地址为:{3}", DateTime.Now, DateTime.Now, msg.Target, schoolNums[msg.Target]);
         }
         else
         {
             if (msg is SocketRequest)
             {
                 Console.WriteLine("{0:M} {1:t}:请求的目标{2}不存在", DateTime.Now, DateTime.Now, msg.Target);
                 SocketResponse response = new SocketResponse();
                 response.SubSystem  = msg.SubSystem;
                 response.MethodName = msg.MethodName;
                 response.Sender     = response.Target;
                 response.Target     = response.Sender;
                 response.ErrorMsg   = "学校没有连接";
                 server.Send(uid, ByteSerializer.ObjectToByte(response));
             }
             else if (msg is SocketResponse)
             {
                 // Console.WriteLine("消息回复给{0}", msg.Target);
                 Console.WriteLine("{0:M} {1:t}:消息回复给{2}", DateTime.Now, DateTime.Now, msg.Target);
                 server.Send(msg.Target, ByteSerializer.ObjectToByte(msg));
             }
         }
     }
     catch (Exception ex)
     {
         WriteLog.Write(string.Format("RelaySocketMsg执行遇到异常:{0},异常来自:{1}", ex.Message, ex.Source));
     }
 }