/// <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("执行成功,已返回结果");
            }
        }
Esempio n. 2
0
 public void HandleMessage(object sender, SocketResponse ex)
 {
     if (ex.isChatMessage && chatCommands.ContainsKey(ex.messageText.ToLower()))
     {
         chatCommands[ex.messageText.ToLower()].Invoke();
     }
 }
Esempio n. 3
0
    public override void HandleSocketResponse(SocketResponse socketResponse)
    {
        string action = socketResponse.p2;

        switch (action)
        {
        case "seatWatch":
            RenderResponse(socketResponse);
            break;
        }
    }
Esempio n. 4
0
 void client_OnMsgReceived(byte[] info)
 {
     try
     {
         response = SeatManage.SeatManageComm.ByteSerializer.DeserializeByte <SocketResponse>(info);
         autoConnectEvent.Set();
     }
     catch (Exception ex)
     {
         isError = true;
     }
 }
Esempio n. 5
0
    /// <summary>
    /// Method called by socket.On("message") Event
    /// </summary>
    /// <param name="e"> SocketIOEvent </param>
    private void socketMessage(SocketIOEvent e)
    {
        SocketResponse res = new SocketResponse();

        // Serialize socket answer to object
        res = JsonUtility.FromJson <SocketResponse> (e.data.ToString());
        //Debug.Log("Get Socket message: " + res.nodeId + "-" + res.value);
        // Save value in databse
        if (istNodeIds.NodeIdToTag.ContainsKey(res.nodeId))
        {
            if (database.ModuleDatabase [istNodeIds.NodeIdToTag [res.nodeId].Module].ContainsKey(istNodeIds.NodeIdToTag [res.nodeId].Core))
            {
                database.ModuleDatabase [istNodeIds.NodeIdToTag [res.nodeId].Module][istNodeIds.NodeIdToTag [res.nodeId].Core].SetNewIstWert(res.value);
            }
            else                 // possible submoduls
            {
                foreach (KeyValuePair <string, DeviceGUI> entry in database.ModuleDatabase[istNodeIds.NodeIdToTag [res.nodeId].Module])
                {
                    if (entry.Value.Submodule)
                    {
                        entry.Value.SetNewIstWert(res);
                    }
                }
            }
        }

        /*if (istNodeIds.NodeIdToTag [res.nodeId].Core.EndsWith ("_O") || istNodeIds.NodeIdToTag [res.nodeId].Core.EndsWith ("_G")) {
         *      // Special case valve
         *      string tag = istNodeIds.NodeIdToTag [res.nodeId].Core.Substring(0, (istNodeIds.NodeIdToTag [res.nodeId].Core.Length - 2));
         *
         *      // Storre the new value
         *      if (istNodeIds.NodeIdToTag [res.nodeId].Core.EndsWith ("_O")) {
         *              database.ModuleDatabase [istNodeIds.NodeIdToTag [res.nodeId].Module] [tag].OPCUA_data._Offen = database.stringToBool(res.value);
         *      } else {
         *              database.ModuleDatabase [istNodeIds.NodeIdToTag [res.nodeId].Module] [tag].OPCUA_data._Geschlossen = database.stringToBool(res.value);
         *      }
         *      // Evaluate the new valve value
         *      database.evaluationValve(database.ModuleDatabase[istNodeIds.NodeIdToTag[res.nodeId].Module][tag]);
         *
         *      Debug.Log("Special Case Ventile! New value stored! " + database.ModuleDatabase[istNodeIds.NodeIdToTag[res.nodeId].Module][tag].OPCUA_data.Value);
         * } else {
         *      if (istNodeIds.NodeIdToTag[res.nodeId].Core.StartsWith("V")) {
         *              if (database.stringToBool(res.value)) {
         *                      database.ModuleDatabase [istNodeIds.NodeIdToTag [res.nodeId].Module] [tag].OPCUA_data.Value = "Open";
         *              } else {
         *                      database.ModuleDatabase [istNodeIds.NodeIdToTag [res.nodeId].Module] [tag].OPCUA_data.Value = "Closed";
         *              }
         *      }
         *      // Normal case. Just write value to Database
         *      database.ModuleDatabase [istNodeIds.NodeIdToTag[res.nodeId].Module][istNodeIds.NodeIdToTag[res.nodeId].Core].OPCUA_data.Value = res.value;
         *      Debug.Log ("Get new Value from subscriptions. Write new value >" + res.value + "< to >" + database.ModuleDatabase[istNodeIds.NodeIdToTag[res.nodeId].Module][istNodeIds.NodeIdToTag [res.nodeId].Core].Tag + "<");
         * }*/
    }
Esempio n. 6
0
 private void OnAuth(SocketResponse auth)
 {
     if (auth.Result.ToLowerInvariant() == "ok")
     {
         _client.StartFeed().Wait();
         RequestRequirements().Wait();
     }
     else
     {
         Log.Error("Socket Client Auth Error {0}", auth.Error);
     }
 }
Esempio n. 7
0
 /// <summary>
 /// Save new value in the spezific subdevie. Overrides the function in parent class.
 /// </summary>
 /// <param name="response">The SocketIO subscription response.</param>
 public override void SetNewIstWert(SocketResponse response)
 {
     // loop through dictinary
     foreach (KeyValuePair <string, Device> entry in subDevices)
     {
         if (entry.Value.IstWert.Nodeid == response.nodeId)
         {
             // Found the device. Safe the new value.
             entry.Value.IstWert.setValue(response.value);
             // TODO: break?
         }
     }
 }
Esempio n. 8
0
    void RenderResponse(SocketResponse socketResponse)
    {
        SeatWatch watch = Convert(socketResponse);

        if (!ValidateSeatWatch(watch))
        {
            ShowMessage(ErrorCode.EC_GAME_INVALID_DATA);
        }
        else
        {
            GetComponent <GameUIRender>().SendMessage("RenderWatch", watch);
        }
    }
Esempio n. 9
0
 /// <summary>
 /// 读者更换座位
 /// </summary>
 /// <param name="cardNo"></param>
 /// <param name="seatNum"></param>
 /// <param name="readingRoomNum"></param>
 /// <returns></returns>
 public string ChangeSeat(string cardNo, string seatNum, string readingRoomNum)
 {
     try
     {
         lock (this.client)
         {
             client.Connect();
             request            = new SocketRequest();
             request.MethodName = "ChangeSeat";
             request.Parameters.Add(cardNo);
             request.Parameters.Add(seatNum);
             request.Parameters.Add(readingRoomNum);
             request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak;
             request.Target    = schoolNum;
             request.MsgType   = TcpMsgDataType.Relay;
             if (request != null)
             {
                 client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                 Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName);
             }
             autoConnectEvent.WaitOne(20000);
             if (response == null)
             {
                 throw new Exception("连接超时。");
             }
             else if (!isError && response.MethodName.Equals("ChangeSeat") && string.IsNullOrEmpty(response.ErrorMsg))
             {
                 return(response.Result.ToString());
             }
             else if (!string.IsNullOrEmpty(response.ErrorMsg))
             {
                 throw new Exception(response.ErrorMsg);
             }
             else
             {
                 return(null);
             }
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         client.Disconnect();
         request  = null;
         response = null;
     }
 }
Esempio n. 10
0
        private async Task WriteResponseAsync(NetworkStream stream, SocketResponse response)
        {
            var responseString       = Json.ToJson(response);
            var responseBuffer       = Encoding.UTF8.GetBytes(responseString);
            var responseLengthBuffer = BitConverter.GetBytes((uint)responseBuffer.Length);

            await stream.WriteAsync(responseLengthBuffer, 0, responseLengthBuffer.Length);

            await stream.WriteAsync(responseBuffer, 0, responseBuffer.Length);

#if DEBUG
            Debug.WriteLine($"TcpSocketServer responded:\n {responseString}");
#endif
        }
Esempio n. 11
0
 public bool UpdateBookLogsState(int bookNo)
 {
     // AsyncTcpClient.AsyncTcpClient client = new AsyncTcpClient.AsyncTcpClient(ip.IP, ip.Port);
     try
     {
         lock (this.client)
         {
             client.Connect();
             request            = new SocketRequest();
             request.MethodName = "UpdateBookLogsState";
             request.Parameters.Add(bookNo);
             request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak;
             request.Target    = schoolNum;
             request.MsgType   = TcpMsgDataType.Relay;
             if (request != null)
             {
                 client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                 Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName);
             }
             autoConnectEvent.WaitOne(20000);
             if (response == null)
             {
                 throw new Exception("连接超时。");
             }
             else if (!isError && response.MethodName.Equals("UpdateBookLogsState") && string.IsNullOrEmpty(response.ErrorMsg))
             {
                 return((bool)response.Result);
             }
             else if (!string.IsNullOrEmpty(response.ErrorMsg))
             {
                 throw new Exception(response.ErrorMsg);
             }
             else
             {
                 return(false);
             }
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         client.Disconnect();
         request  = null;
         response = null;
     }
 }
Esempio n. 12
0
 public SeatManage.ClassModel.ReaderInfo CheckAndGetReaderInfo(UserInfo user)
 {
     try
     {
         lock (this.client)
         {
             client.Connect();//连接
             request            = new SocketRequest();
             request.MethodName = "CheckAndGetReaderInfo";
             request.Parameters.Add(user);
             request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak;
             request.Target    = schoolNum;
             request.MsgType   = TcpMsgDataType.Relay;
             if (request != null)
             {
                 client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                 Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName);
             }
             autoConnectEvent.WaitOne(20000);
             if (response == null)
             {
                 throw new Exception("连接超时。");
             }
             else if (!isError && response.MethodName.Equals("CheckAndGetReaderInfo") && string.IsNullOrEmpty(response.ErrorMsg))
             {
                 return(response.Result as ReaderInfo);
             }
             else if (!string.IsNullOrEmpty(response.ErrorMsg))
             {
                 throw new Exception(response.ErrorMsg);
             }
             else
             {
                 return(null);
             }
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         request  = null;
         response = null;
         client.Disconnect();
     }
 }
Esempio n. 13
0
    void OnServerDisconnect(Socket socket, Packet packet, params object[] args)
    {
#if DEBUG
#if UNITY_EDITOR
        if (GlobalGameManager.instance.CanDebugThis(SocketEvetns.DISCONNECT))
        {
            Debug.Log("Enter in OnServerDisconnect Time = " + System.DateTime.Now);
        }
#else
        Debug.Log("Enter in OnServerDisconnect Time = " + System.DateTime.Now);
#endif
#endif
        SocketResponse response = new SocketResponse();
        response.eventType = SocketEvetns.DISCONNECT;
        socketResponse.Add(response);
    }
Esempio n. 14
0
        /// <summary>
        /// OnSocket response received
        /// </summary>
        /// <param name="response"></param>
        private void OnSocketResponseReceived(SocketResponse response)
        {
            switch (response.socketResponseType)
            {
            case GameVariables.SocketResponseType.onRoomJoin: OnRoomJoin((OnRoomJoinResponse)response);
                break;

            case GameVariables.SocketResponseType.userRoomJoin: UserRoomJoin((UserRoomJoinResponse)response);
                break;

            case GameVariables.SocketResponseType.gameStart: GameStart((GameStartResponse)response);
                break;

            case GameVariables.SocketResponseType.cardDrawRes: OncardDraw((CardDrawRes)response);
                break;

            case GameVariables.SocketResponseType.cardDiscardRes: OnCardDiscard((CardDiscardResResponse)response);
                break;

            case GameVariables.SocketResponseType.playerLeftRes: OnPlayerLeft((PlayerLeftResResponse)response);
                break;

            case GameVariables.SocketResponseType.roundComplete: OnRoundComplete((RoundCompleteResponse)response);
                break;

            case GameVariables.SocketResponseType.declareRes: OnDeclarePlayer((DeclarResponse)response);
                break;

            case GameVariables.SocketResponseType.dropRes: OnPlayerDrop((DropResponse)response);
                break;

            case GameVariables.SocketResponseType.roomStateRes: OnRoomStatusResponse((RoomStatusResponse)response);
                break;

            case GameVariables.SocketResponseType.handValidateRes: OnGroupValidationResponse((GroupValidationResponse)response);
                break;

            case GameVariables.SocketResponseType.changeTurn: OnPlayerTurmChangeResponse((PlayerTurnResponse)response);
                break;

            case GameVariables.SocketResponseType.roomClose: OnRoomClose((RoomCloseResponse)response);
                break;

            case GameVariables.SocketResponseType.matchComplete: OnMatchComplete((MatchCloseResponse)response);
                break;
            }
        }
Esempio n. 15
0
 public Dictionary <string, ReadingRoomSeatUsedState_Ex> GetAllRoomSeatUsedState()
 {
     try
     {
         lock (this.client)
         {
             client.Connect();
             request            = new SocketRequest();
             request.MethodName = "GetAllRoomSeatUsedState";
             request.SubSystem  = TcpSeatManageSubSystem.WeiXinSeatBespeak;
             request.Target     = schoolNum;
             request.MsgType    = TcpMsgDataType.Relay;
             if (request != null)
             {
                 client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                 Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName);
             }
             autoConnectEvent.WaitOne(20000);
             if (response == null)
             {
                 throw new Exception("连接超时。");
             }
             else if (!isError && response.MethodName.Equals("GetAllRoomSeatUsedState") && string.IsNullOrEmpty(response.ErrorMsg))
             {
                 return(response.Result as Dictionary <string, ReadingRoomSeatUsedState_Ex>);
             }
             else if (!string.IsNullOrEmpty(response.ErrorMsg))
             {
                 throw new Exception(response.ErrorMsg);
             }
             else
             {
                 return(null);
             }
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         client.Disconnect();
         request  = null;
         response = null;
     }
 }
        /// <summary>
        /// 发送请求的数据包
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private string CallService(SocketRequest request)
        {
            try
            {
                lock (this.client)
                {
                    SocketConnect(0);

                    request.SubSystem = TcpSeatManageSubSystem.AndroidApp;
                    request.Target    = schoolNum;
                    request.MsgType   = TcpMsgDataType.Relay;
                    client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                    Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.RequestMethodType);
                    autoConnectEvent.WaitOne(20000);
                    if (response == null)
                    {
                        throw new Exception("连接超时。");
                    }
                    else if (!isError && string.IsNullOrEmpty(response.ErrorMsg))
                    {
                        return(response.Result as string);
                    }
                    else if (!string.IsNullOrEmpty(response.ErrorMsg))
                    {
                        throw new Exception(response.ErrorMsg);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                request  = null;
                response = null;
                client.Disconnect();
            }
        }
Esempio n. 17
0
    // LISTNER_METHODS ---------------------------------------------------------------------------------------------------------------------------------------------------------



    #region LISTNER_METHODS

    void OnPlayerObjectFound(Socket socket, Packet packet, params object[] args)
    {
        string responseText = JsonMapper.ToJson(args);

#if DEBUG
#if UNITY_EDITOR
        if (GlobalGameManager.instance.CanDebugThis(SocketEvetns.PLAYER_OBJECT))
        {
            Debug.Log("OnPlayerObjectFound = " + responseText + "  Time = " + System.DateTime.Now);
        }
#else
        Debug.Log("OnPlayerObjectFound = " + responseText + "  Time = " + System.DateTime.Now);
#endif
#endif
        SocketResponse response = new SocketResponse();
        response.eventType = SocketEvetns.PLAYER_OBJECT;
        response.data      = responseText;
        socketResponse.Add(response);
    }
Esempio n. 18
0
    void OnCardDistributeTimerFound(Socket socket, Packet packet, params object[] args)
    {
        string responseText = JsonMapper.ToJson(args);

#if DEBUG
#if UNITY_EDITOR
        if (GlobalGameManager.instance.CanDebugThis(SocketEvetns.ON_CARD_DISTRIBUTE_TIMER_FOUND))
        {
            Debug.Log("OnCardDistributeTimerFound = " + responseText + "  Time = " + System.DateTime.Now);
        }
#else
        Debug.Log("OnCardDistributeTimerFound = " + responseText + "  Time = " + System.DateTime.Now);
#endif
#endif

        SocketResponse response = new SocketResponse();
        response.eventType = SocketEvetns.ON_CARD_DISTRIBUTE_TIMER_FOUND;
        response.data      = responseText;
        socketResponse.Add(response);
    }
Esempio n. 19
0
    void MatchHistory(Socket socket, Packet packet, params object[] args)
    {
        string responseText = JsonMapper.ToJson(args);

#if DEBUG
#if UNITY_EDITOR
        if (GlobalGameManager.instance.CanDebugThis(SocketEvetns.ON_MATCH_HISTORY_FOUND))
        {
            Debug.Log("MatchHistory = " + responseText + "  Time = " + System.DateTime.Now);
        }
#else
        Debug.Log("MatchHistory = " + responseText + "  Time = " + System.DateTime.Now);
#endif
#endif

        SocketResponse response = new SocketResponse();
        response.eventType = SocketEvetns.ON_MATCH_HISTORY_FOUND;
        response.data      = responseText;
        socketResponse.Add(response);
    }
Esempio n. 20
0
    private void OnMessageReceived(WebSocket webSocket, string message)
    {
        RKLog.Log("OnMessageReceived: " + message, "socketcontroller");
        SocketResponse data = JsonUtility.FromJson <SocketResponse>(message);

        GenericData gd = new GenericData();

        foreach (ResponseStringList item in data.data)
        {
            gd.Set(item.key, item.value);
        }

        RKLog.Log("invoke: " + gd.ToString(), "socketcontroller");

        MessageReceived.Invoke(data.type, gd);

        if (data.type == "update")
        {
            RKLog.Log("onmessagereceived, update: " + gd.ToString() + " dus poll", "socketcontroller");
        }
    }
Esempio n. 21
0
    void OnSentEmoji(Socket socket, Packet packet, params object[] args)
    {
#if DEBUG
        Debug.Log("OnOtherSeeEmoji -CALL    = " + System.DateTime.Now);
#endif

        string responseText = JsonMapper.ToJson(args);

#if DEBUG
#if UNITY_EDITOR
        if (GlobalGameManager.instance.CanDebugThis(SocketEvetns.ON_RECONNECTED))
        {
            Debug.Log("OnOtherSeeEmoji -CALL  = " + responseText + "  Time = " + System.DateTime.Now);
        }
#else
        Debug.Log("OnReconnected = " + responseText + "  Time = " + System.DateTime.Now);
#endif
#endif
        SocketResponse response = new SocketResponse();
        response.eventType = SocketEvetns.ON_CARD_DISTRIBUTE_TIMER_FOUND;
        response.data      = responseText;
        socketResponse.Add(response);
    }
Esempio n. 22
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));
     }
 }
Esempio n. 23
0
 void LogResponse(object sender, SocketResponse ex)
 {
     Log(ex.Payload.ToString());
 }
Esempio n. 24
0
        static void Main(string[] args)
        {
            Console.WriteLine("Starting: Creating Socket Objeot");
            int port = 8080;//服务器端口号
            //string host = "192.168.1.103";//服务器IP地址
            string host = "10.3.0.1";//服务器IP地址

            Socket listener = new Socket(AddressFamily.InterNetwork,
                                        SocketType.Stream,
                                        ProtocolType.Tcp);//创建一个Socket类 

            listener.Bind(new IPEndPoint(IPAddress.Parse(host), port));//绑定8080端口 
            listener.Listen(10);//开始监听 

            while (true)
            {
                Console.WriteLine("Waiting for connection on port 8080");
                string recvStr = string.Empty;
                Socket socket = listener.Accept();//为新建连接创建新的Socket。 

                while (true)
                {
                    byte[] recvBytes = new byte[1024];
                    int numBytes = socket.Receive(recvBytes);
                    Console.WriteLine("Receiving ...");
                    recvStr += Encoding.UTF8.GetString(recvBytes, 0, numBytes);
                    if (recvStr.IndexOf("[FINAL]") > -1)
                    {
                        recvStr = recvStr.Replace("[FINAL]", "");
                        break;
                    }
                }

                //Console.WriteLine("Received string: {0}", recvStr);//接受到的数据打印出来
                //反序列化收到的字符串为JSON对象
                SocketRequest request = null;
                JavaScriptSerializer jss = new JavaScriptSerializer();
                request = jss.Deserialize(recvStr, typeof(SocketRequest)) as SocketRequest;
                Console.WriteLine(recvStr);
                var Option = request.Op;
                if (Option.Equals("Login"))
                {
                    Dictionary<string, object> UserData = (Dictionary<string, object>)request.RequestData;
                    string UserName = UserData["Username"].ToString();
                    string PassWord = UserData["Password"].ToString();
                    Console.WriteLine("Op: {0}; Username: {1}; Password: {2}", Option, UserName, PassWord);

                    //检查是否有该用户及其密码是否匹配
                    var dbcon = new SqlConnection(SqlConLoc);
                    var dbcommand = dbcon.CreateCommand();
                    dbcommand.CommandText = "SELECT Password, AprvCon, UpldCon, RealName, Company, Email, Description FROM UserInfoTable WHERE Username = '******'";
                    dbcon.Open();

                    SqlDataReader dbreader = dbcommand.ExecuteReader();
                    /*
                    while (dbreader.Read())
                    {
                        Console.WriteLine("User: {0}; Password: {1}",
                            dbreader[0].ToString(), dbreader[1].ToString());
                    }
                    */
                    if (dbreader.Read())
                    {
                        if (PassWord.Equals(dbreader[0].ToString()))
                        {
                            //验证成功 返回用户数据
                            //待审批列表
                            LoginResponse loginresp = new LoginResponse();

                            string aprvconlist = dbreader[1].ToString();
                            string upldconlist = dbreader[2].ToString();
                            string realname = dbreader[3].ToString();
                            string company = dbreader[4].ToString();
                            string email = dbreader[5].ToString();
                            string description = dbreader[6].ToString();
                            Console.WriteLine("{0}, {1}", aprvconlist, upldconlist);
                            dbreader.Close();
                            if (aprvconlist.Length > 0)
                            {
                                string[] ConList = aprvconlist.Split(new Char[] { ';' });
                                Contract[] AprvConListArray = new Contract[ConList.Length];
                                int sum = 0;
                                foreach (string con in ConList)
                                {
                                    dbcommand.CommandText = "SELECT * FROM ContractTable WHERE Id = " + con;
                                    var dbreader_con = dbcommand.ExecuteReader();
                                    while (dbreader_con.Read())
                                    {
                                        //Console.WriteLine("{0}, {1}, {2}", dbreader_con[1].ToString(), dbreader_con[2].ToString(), dbreader_con[3].ToString());                            
                                        var contract = new Contract();
                                        contract.id = int.Parse(dbreader_con[0].ToString());
                                        contract.title = dbreader_con[1].ToString();
                                        contract.author = dbreader_con[2].ToString();
                                        contract.status = int.Parse(dbreader_con[3].ToString());
                                        contract.sum = int.Parse(dbreader_con[4].ToString());
                                        contract.content = dbreader_con[5].ToString();
                                        contract.time = dbreader_con[6].ToString();
                                        contract.number = dbreader_con[7].ToString();
                                        contract.category = dbreader_con[8].ToString();
                                        contract.proname = dbreader_con[9].ToString();
                                        contract.pronum = dbreader_con[10].ToString();
                                        contract.goodname = dbreader_con[11].ToString();
                                        contract.goodnum = dbreader_con[12].ToString();
                                        contract.sum_cat = dbreader_con[13].ToString();
                                        contract.payment = dbreader_con[14].ToString();
                                        contract.rate = dbreader_con[15].ToString();
                                        contract.signname = dbreader_con[16].ToString();
                                        contract.dealname = dbreader_con[17].ToString();
                                        contract.period = dbreader_con[18].ToString();
                                        contract.site = dbreader_con[19].ToString();
                                        contract.punish = dbreader_con[20].ToString();
                                        contract.ps = dbreader_con[21].ToString();
                                        contract.comment = dbreader_con[22].ToString();

                                        AprvConListArray[sum] = contract;
                                        sum++;
                                    }
                                    dbreader_con.Close();
                                }
                                loginresp.AprvConList = AprvConListArray;
                            }
                            if (upldconlist.Length > 0)
                            {

                                //上传列表
                                string[] ConList_upld = upldconlist.Split(new Char[] { ';' });
                                Contract[] UpldConListArray = new Contract[ConList_upld.Length];
                                int sum = 0;
                                foreach (string con in ConList_upld)
                                {
                                    dbcommand.CommandText = "SELECT * FROM ContractTable WHERE Id =" + con;
                                    //Console.WriteLine(dbcommand.CommandText);
                                    var dbreader_con_upld = dbcommand.ExecuteReader();
                                    while (dbreader_con_upld.Read())
                                    {
                                        //Console.WriteLine("{0}, {1}, {2}", dbreader_con_upld[1].ToString(), dbreader_con_upld[2].ToString(), dbreader_con_upld[3].ToString());                            
                                        var contract = new Contract();
                                        contract.id = int.Parse(dbreader_con_upld[0].ToString());
                                        contract.title = dbreader_con_upld[1].ToString();
                                        contract.author = dbreader_con_upld[2].ToString();
                                        contract.status = int.Parse(dbreader_con_upld[3].ToString());
                                        contract.sum = int.Parse(dbreader_con_upld[4].ToString());
                                        contract.content = dbreader_con_upld[5].ToString();
                                        contract.time = dbreader_con_upld[6].ToString();
                                        contract.number = dbreader_con_upld[7].ToString();
                                        contract.category = dbreader_con_upld[8].ToString();
                                        contract.proname = dbreader_con_upld[9].ToString();
                                        contract.pronum = dbreader_con_upld[10].ToString();
                                        contract.goodname = dbreader_con_upld[11].ToString();
                                        contract.goodnum = dbreader_con_upld[12].ToString();
                                        contract.sum_cat = dbreader_con_upld[13].ToString();
                                        contract.payment = dbreader_con_upld[14].ToString();
                                        contract.rate = dbreader_con_upld[15].ToString();
                                        contract.signname = dbreader_con_upld[16].ToString();
                                        contract.dealname = dbreader_con_upld[17].ToString();
                                        contract.period = dbreader_con_upld[18].ToString();
                                        contract.site = dbreader_con_upld[19].ToString();
                                        contract.punish = dbreader_con_upld[20].ToString();
                                        contract.ps = dbreader_con_upld[21].ToString();
                                        contract.comment = dbreader_con_upld[22].ToString();

                                        UpldConListArray[sum] = contract;
                                        sum++;
                                    }
                                    dbreader_con_upld.Close();
                                }
                                loginresp.UpldConList = UpldConListArray;
                            }

                            //个人信息
                            loginresp.RealName = realname;
                            loginresp.Company = company;
                            loginresp.Description = description;
                            loginresp.Email = email;

                            //给客户端回复数据
                            var response = new SocketResponse
                            {
                                Op = "Correct",
                                ResultData = (object)loginresp
                            };

                            string replyString = jss.Serialize(response) + "\n";
                            byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                            Console.WriteLine(replyString);
                            socket.Send(replyMessage);
                        }
                        else
                        {
                            var response = new SocketResponse
                            {
                                Op = "Wrong",
                                ResultData = null
                            };
                            string replyString = jss.Serialize(response) + "\n";
                            byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                            socket.Send(replyMessage);
                        }
                    }
                    else
                    {
                        var response = new SocketResponse
                        {
                            Op = "Wrong",
                            ResultData = null
                        };
                        string replyString = jss.Serialize(response) + "\n";
                        byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                        socket.Send(replyMessage);
                    }
                    dbcon.Close();
                }
                else if (Option.Equals("UpdateAprvResult"))
                {
                    //用审批结果更新contract表
                    Dictionary<string, object> UserData = (Dictionary<string, object>)request.RequestData;
                    string Comment = UserData["Comment"].ToString();
                    string Result = UserData["Result"].ToString();
                    string ContractId = UserData["ContractId"].ToString();
                    Console.WriteLine("Op: {0}; Result: {1}; Comment: {2}", Option, Result, Comment);

                    var dbcon = new SqlConnection(SqlConLoc);
                    var dbcommand = dbcon.CreateCommand();
                    dbcommand.CommandText = "UPDATE ContractTable SET Status = " + Result + ", Comment = '" + Comment + "' WHERE Id = " + ContractId;
                    dbcon.Open();
                    int count = dbcommand.ExecuteNonQuery();
                    if (count > 0)
                    {
                        var response = new SocketResponse
                        {
                            Op = "Correct",
                            ResultData = null
                        };
                        string replyString = jss.Serialize(response) + "\n";
                        byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                        socket.Send(replyMessage);
                    }
                    else
                    {
                        var response = new SocketResponse
                        {
                            Op = "Wrong",
                            ResultData = null
                        };
                        string replyString = jss.Serialize(response) + "\n";
                        byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                        socket.Send(replyMessage);
                    }
                    dbcon.Close();
                }
                else if (Option.Equals("Upload"))
                {
                    Dictionary<string, object> UserData = (Dictionary<string, object>)request.RequestData;
                    string SignName = UserData["signname"].ToString();
                    string Author = UserData["author"].ToString();

                    Console.WriteLine("Op: {0}; Author: {1}; SignName: {2}", Option, Author, SignName);

                    //检查是否待审批用户是否存在
                    var dbcon = new SqlConnection(SqlConLoc);
                    var dbcommand = dbcon.CreateCommand();
                    dbcommand.CommandText = "SELECT AprvCon FROM UserInfoTable WHERE Username = '******'";
                    dbcon.Open();

                    SqlDataReader dbreader = dbcommand.ExecuteReader();

                    if (dbreader.Read())
                    {
                        string aprvconlist = dbreader[0].ToString();
                        //Console.WriteLine("{0}, {1}", aprvconlist, upldconlist);    
                        dbreader.Close();

                        //验证成功 新建合同
                        dbcommand.CommandText = "SELECT Id FROM ContractTable";
                        var dbreader_id = dbcommand.ExecuteReader();
                        int NewId = 0;
                        while (dbreader_id.Read()) NewId++;
                        dbreader_id.Close();
                        string sql = "INSERT INTO ContractTable VALUES(" + NewId.ToString() + ", ";
                        sql += "'" + UserData["title"].ToString() + "', ";
                        sql += "'" + Author + "', ";
                        sql += "0, ";
                        sql += UserData["sum"].ToString() + ", ";
                        sql += "'" + UserData["content"].ToString() + "', ";
                        sql += "'" + UserData["date"].ToString() + "', ";
                        sql += "'" + UserData["connum"].ToString() + "', ";
                        sql += "'" + UserData["cat"].ToString() + "', ";
                        sql += "'" + UserData["proname"].ToString() + "', ";
                        sql += "'" + UserData["pronum"].ToString() + "', ";
                        sql += "'" + UserData["goodname"].ToString() + "', ";
                        sql += "'" + UserData["goodnum"].ToString() + "', ";
                        sql += "'" + UserData["sumcat"].ToString() + "', ";
                        sql += "'" + UserData["payment"].ToString() + "', ";
                        sql += "'" + UserData["rate"].ToString() + "', ";
                        sql += "'" + SignName + "', ";
                        sql += "'" + Author + "', ";
                        sql += "'" + UserData["period"].ToString() + "', ";
                        sql += "'" + UserData["site"].ToString() + "', ";
                        sql += "'" + UserData["punish"].ToString() + "', ";
                        sql += "'" + UserData["ps"].ToString() + "', ";
                        sql += "'')";
                        dbcommand.CommandText = sql;
                        int flag = dbcommand.ExecuteNonQuery();
                        if (flag > 0)
                        {
                            //更新待审批人信息
                            aprvconlist += ";" + NewId.ToString();
                            dbcommand.CommandText = "UPDATE UserInfoTable SET AprvCon = '" + aprvconlist + "' WHERE Username = '******'";
                            dbcommand.ExecuteNonQuery();

                            //更新上传者信息
                            dbcommand.CommandText = "SELECT UpldCon FROM UserInfoTable WHERE Username = '******'";
                            SqlDataReader dbreader_au = dbcommand.ExecuteReader();
                            dbreader_au.Read();
                            string upldconlist = dbreader_au[0].ToString();
                            dbreader_au.Close();
                            upldconlist += ";" + NewId.ToString();
                            dbcommand.CommandText = "UPDATE UserInfoTable SET UpldCon = '" + upldconlist + "' WHERE Username = '******'";
                            dbcommand.ExecuteNonQuery();

                            //给客户端回复数据
                            var response = new SocketResponse
                            {
                                Op = "Correct",
                                ResultData = null
                            };
                            string replyString = jss.Serialize(response) + "\n";
                            byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                            Console.WriteLine(replyString);
                            socket.Send(replyMessage);
                        }
                    }
                    else
                    {
                        //SignName有问题
                        var response = new SocketResponse
                        {
                            Op = "Wrong",
                            ResultData = null
                        };
                        string replyString = jss.Serialize(response) + "\n";
                        byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                        socket.Send(replyMessage);
                    }
                    dbcon.Close();
                }
                else if (Option.Equals("NewUser"))
                {
                    Dictionary<string, object> UserData = (Dictionary<string, object>)request.RequestData;
                    string UserName = UserData["username"].ToString();

                    Console.WriteLine("Op: {0}; UserName: {1};", Option, UserName);

                    //检查用户名是否存在
                    var dbcon = new SqlConnection(SqlConLoc);
                    var dbcommand = dbcon.CreateCommand();
                    dbcommand.CommandText = "SELECT Id FROM UserInfoTable WHERE Username = '******'";
                    dbcon.Open();

                    SqlDataReader dbreader = dbcommand.ExecuteReader();

                    if (dbreader.Read())
                    {
                        dbreader.Close();
                        //Username已被注册
                        var response = new SocketResponse
                        {
                            Op = "Wrong",
                            ResultData = null
                        };
                        string replyString = jss.Serialize(response) + "\n";
                        byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                        socket.Send(replyMessage);
                    }
                    else
                    {
                        dbreader.Close();

                        //验证成功 新建用户
                        dbcommand.CommandText = "SELECT Id FROM UserInfoTable";
                        var dbreader_uid = dbcommand.ExecuteReader();
                        int NewId = 0;
                        while (dbreader_uid.Read()) NewId++;
                        dbreader_uid.Close();
                        string sql = "INSERT INTO UserInfoTable VALUES(" + NewId.ToString() + ", ";
                        sql += "'" + UserName + "', ";
                        sql += "'" + UserData["password"].ToString() + "', ";
                        sql += "'0', ";
                        sql += "'0', ";
                        sql += "'" + UserData["realname"].ToString() + "', ";
                        sql += "'" + UserData["company"].ToString() + "', ";
                        sql += "'" + UserData["email"].ToString() + "', ";
                        sql += "'" + UserData["description"].ToString() + "')";
                        dbcommand.CommandText = sql;
                        int flag = dbcommand.ExecuteNonQuery();
                        if (flag > 0)
                        {
                            //给客户端回复数据
                            var response = new SocketResponse
                            {
                                Op = "Correct",
                                ResultData = null
                            };
                            string replyString = jss.Serialize(response) + "\n";
                            byte[] replyMessage = Encoding.UTF8.GetBytes(replyString);
                            Console.WriteLine(replyString);
                            socket.Send(replyMessage);
                        }
                    }
                    dbcon.Close();
                }
            }
            listener.Close();            
        }
Esempio n. 25
0
 private void ClientOnEventReset(SocketResponse <Event> data)
 {
     _logger.LogInformation(data.ToJson());
 }
Esempio n. 26
0
 private void ClientOnEventSettle(SocketResponse <OutcomeSettle[]> data)
 {
     _logger.LogInformation(data.ToJson());
 }
Esempio n. 27
0
 private void OnUpdateResult(SocketResponse <UpdateResult> data)
 {
     _logger.LogInformation(data.ToJson());
 }
Esempio n. 28
0
 private void OnTournament(SocketResponse <Tournament[]> data)
 {
     _logger.LogInformation(data.ToJson());
 }
Esempio n. 29
0
 private void OnTimerSet(SocketResponse <TimerSet> data)
 {
     _logger.LogInformation(data.ToJson());
 }
Esempio n. 30
0
 private void OnSport(SocketResponse <Sport[]> data)
 {
     _logger.LogInformation(data.ToJson());
 }
Esempio n. 31
0
 private void OnUpdate(SocketResponse <Event> data)
 {
     _logger.LogInformation(data.ToJson());
 }