Beispiel #1
0
        public static void AcceptCallback(IAsyncResult er)
        {
            bool Flag_IP = false;

            try
            {
                allDone.Set();
                // 异步获取用户对象
                Socket listener = (Socket)er.AsyncState;
                //异步接收连接通讯
                Socket      handler = listener.EndAccept(er);
                StateObjcet state   = new StateObjcet();
                state.workSocket = handler;
                IPAddress remote_ip = ((IPEndPoint)handler.RemoteEndPoint).Address;  //获取远程连接IP,用于安全处理



                using (SRCfPExecute.CfPExecuteServiceClient client = new SRCfPExecute.CfPExecuteServiceClient())
                {
                    var ret = client.GetAllIPRegistForm("test");
                    foreach (SRCfPExecute.IPRegistForm i in ret.Data)
                    {
                        if (remote_ip.ToString() == i.IP)
                        {
                            UpdateControl(new MainForm(), new EventArgs(), handler);
                            Utils.Logger.Debug(i.IP + "该IP已登记,顺利连接");
                            Flag_IP = true;
                            break;
                        }
                    }
                }
                if (!Flag_IP)
                {
                    Utils.Logger.Debug(remote_ip.ToString() + "该IP未登记,连接中断");
                    Byte[] byteMessage = new Byte[100]; //存放消息的字节数组缓冲区, 注意数组表示方法,和C不同的.
                    byteMessage = System.Text.Encoding.Default.GetBytes("error 401:IP no Regiter");
                    Socket SelectSocket = handler;
                    SelectSocket.BeginSend(byteMessage, 0, byteMessage.Length, 0, new AsyncCallback(SendCallback), SelectSocket);
                    SelectSocket.Dispose();
                }
                else
                {
                    Byte[] byteMessage = new Byte[100]; //存放消息的字节数组缓冲区, 注意数组表示方法,和C不同的.
                    byteMessage = System.Text.Encoding.Default.GetBytes("Connectting");
                    Socket SelectSocket = handler;

                    try
                    {
                        SelectSocket.BeginSend(byteMessage, 0, byteMessage.Length, 0, new AsyncCallback(SendCallback), SelectSocket);

                        handler.BeginReceive(state.buffer, 0, StateObjcet.BufferSize, 0, new AsyncCallback(ReadCallback), state);
                    }
                    catch (ObjectDisposedException ex)
                    {
                        Utils.Logger.Error(ex.ToString());
                    }
                }
            }
            catch (ObjectDisposedException ex)
            {
                Utils.Logger.Error(ex.ToString());
            }
        }
Beispiel #2
0
        private void BgwWait_DoWork(object sender, DoWorkEventArgs e)
        {
            BgwWait.ReportProgress(PubConstant.WaitMessageStatus.START);
            try
            {
                switch (e.Argument.ToString())
                {
                case "SearchData":
                    using (SRCfPExecute.CfPExecuteServiceClient client = new SRCfPExecute.CfPExecuteServiceClient())
                    {
                        var ret = client.GetAllIPRegistForm(context.SessionID);
                        e.Result = ret.Data;
                    }

                    break;

                case "SaveData":
                    using (SRCfPExecute.CfPExecuteServiceClient client = new SRCfPExecute.CfPExecuteServiceClient())
                    {
                        var ret = client.InsterRegistForm(context.SessionID, model);

                        if (ret.IsSuccess)
                        {
                            e.Result = client.GetAllIPRegistForm(context.SessionID).Data;

                            BgwWait.ReportProgress(99, "保存成功!");
                        }

                        break;
                    }

                case "DelData":

                    using (SRCfPExecute.CfPExecuteServiceClient client = new SRCfPExecute.CfPExecuteServiceClient())
                    {
                        var ret = client.DeleteRegistFormById(context.SessionID, model);
                        if (ret.IsSuccess)
                        {
                            e.Result = client.GetAllIPRegistForm(context.SessionID).Data;
                            BgwWait.ReportProgress(99, "删除成功!");
                        }

                        break;
                    }

                case "UpdData":


                    using (SRCfPExecute.CfPExecuteServiceClient client = new SRCfPExecute.CfPExecuteServiceClient())
                    {
                        var ret = client.UpdateRegistForm(context.SessionID, model);
                        if (ret.IsSuccess)
                        {
                            e.Result = client.GetAllIPRegistForm(context.SessionID).Data;
                            BgwWait.ReportProgress(99, "修改成功!");
                        }

                        break;
                    }

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                BgwWait.ReportProgress(101, ex.Message);
            }

            BgwWait.ReportProgress(PubConstant.WaitMessageStatus.END);
        }