Beispiel #1
0
        HandleResult OnReceive(IntPtr connId, byte[] bytes)
        {
            // 数据到达了
            try
            {
                // 获取附加数据
                var clientInfo = server.GetExtra <ClientInfo>(connId);
                if (clientInfo != null)
                {
                    // clientInfo 就是accept里传入的附加数据了
                    AddMsg(string.Format(" > [{0},OnReceive] -> {1}:{2} ({3} bytes)", clientInfo.ConnId, clientInfo.IpAddress, clientInfo.Port, bytes.Length));
                }
                else
                {
                    AddMsg(string.Format(" > [{0},OnReceive] -> ({1} bytes)", connId, bytes.Length));
                }

                if (server.Send(connId, bytes, bytes.Length))
                {
                    return(HandleResult.Ok);
                }

                return(HandleResult.Error);
            }
            catch (Exception)
            {
                return(HandleResult.Ignore);
            }
        }
Beispiel #2
0
        //注意:只传递SendData数据
        private HPSocketCS.HandleResult Server_OnReceive(IntPtr connId, byte[] bytes)
        {
            // 数据到达了
            try
            {
                // 获取附加数据
                var clientInfo = server.GetExtra <ClientInfo>(connId);
                if (clientInfo != null)
                {
                    // clientInfo 就是accept里传入的附加数据了
                    //Write(string.Format(" > [{0},OnReceive] -> {1}:{2} ({3} bytes)", clientInfo.ConnId, clientInfo.IpAddress, clientInfo.Port, bytes.Length));
                    SendData sendData = server.BytesToObject(bytes) as SendData;

                    switch (sendData.ActionCode)
                    {
                    case ActionCodeBase.ThroughDoor:
                        if (sendData.IORInfoL.Count > 0)
                        {
                            this.Invoke(new Action <ClientInfo, SendData>(ReSendToClient), clientInfo, sendData);
                            dal.RecordInOut(sendData.IORInfoL[0]);
                            if (sendData.IORInfoL[0].ThroughWay == "ThroughWay_C")
                            {
                                if (sendData.PInfoL.Count > 0)
                                {
                                    dal.RegisterPersonnelInfo(sendData.PInfoL[0]);
                                }
                                if (sendData.FFInfoL.Count > 0)
                                {
                                    dal.RegisterFaceFeature(sendData.FFInfoL[0].Feature, sendData.FFInfoL[0].IDCard);
                                }
                            }
                        }

                        break;

                    case ActionCodeBase.UploadData_Success:
                        //收到数据上传成功指令,则下发数据,各端实时同步最新数据
                        clientInfo.DBInfo = sendData.DBInfo;
                        List <ClientInfo> list = GetClientInfoList();   //在线客户端列表
                        bll.DataSync(list);
                        break;

                    case ActionCodeBase.ReSendPicture:
                        //发送画面 =》 监视窗口
                        this.Invoke(new Action <ClientInfo, SendData>(ReSendToClient), clientInfo, sendData);
                        break;
                    }
                    //Write(string.Format(" > [{0},OnReceive] -> SendData({1},{2})", clientInfo.ConnId, sendData.Order, sendData.Message));
                }
                else
                {
                    LogHelper.logRecord(string.Format(" > [{0},OnReceive] -> ({1} bytes)", connId, bytes.Length));
                }

                return(HandleResult.Ok);
            }
            catch (Exception)
            {
                return(HandleResult.Ignore);
            }
        }