private const int OutTimeConn = 10000; //连接时间超时  5秒

        public BaseResponse SendMessage(BaseRequest bmr, string WebsiteCode, string TellerCode)
        {
            TimeoutObject.Reset();
            BaseResponse result = null;

            _socket.BeginConnect(new IPEndPoint(IPAddress.Parse(RemoteIP), RemotePort), delegate(IAsyncResult ar) { TimeoutObject.Set(); }, _socket);
            if (TimeoutObject.WaitOne(OutTimeConn, false))
            {
                _socket.ReceiveTimeout = OutTime;
                _socket.SendTimeout    = OutTime;
                string str = bmr.ObjectToMessage();
                _socket.Send(Encod.GetBytes(str));
                len = _socket.Receive(buffer);

                if (len > 0)
                {
                    string strbuff = Encod.GetString(buffer);
                    switch (bmr.BusinessCode)
                    {
                    case "01": result = new Response01(buffer); break;

                    case "02": result = new Response02(buffer); break;

                    case "03": result = new Response03(buffer); break;

                    case "04": result = new Response04(buffer); break;

                    case "05": result = new Response05(buffer); break;

                    case "06": result = new Response06(buffer); break;

                    case "07": result = new Response07(buffer); break;

                    case "08": result = new Response08(buffer); break;

                    case "09": result = new Response09(buffer); break;

                    default: return(null);
                    }
                }
                bmr.SaveMessage(WebsiteCode, TellerCode);
                if (result != null)
                {
                    result.BankCode = bmr.BankCode;
                    result.SaveMessage(WebsiteCode, TellerCode);
                }
                return(result);
            }
            else
            {
                if (_socket.Connected)
                {
                    _socket.Shutdown(SocketShutdown.Both);
                    _socket.Close();
                }
                throw new Exception("所提供的服务器连接超时");
            }
        }
Example #2
0
        /// <summary>
        /// 发起对账
        /// </summary>
        private void SendBillExecute()
        {
            if (FileName == null)
            {
                VMHelp.ShowMessage("文件未生成成功", false);
                return;
            }
            if (!client.UploadState)
            {
                VMHelp.ShowMessage("文件未上传成功", false);
                return;
            }
            Response01 response = new Response01();
            Request01  request  = new Request01();

            request.BankCode     = VMHelp.BankCode;
            request.FileName     = FileName;
            request.BusinessCode = Tools.PublicData.CheckBill;
            ObservableCollection <AccountAndBalance> temp = GetBalance();//获得平台余额
            decimal PlatformBalance = 0;

            foreach (AccountAndBalance item in temp)
            {
                PlatformBalance += item.Balance.Value;
            }
            request.PlatformBalance = PlatformBalance.ToString();//平台余额
            BillCheckWindowVm vm       = new BillCheckWindowVm();
            BillCheckWindow   bkwindow = new BillCheckWindow(vm);

            bkwindow.Tag = "当日对账";
            if (!(bool)bkwindow.ShowDialog())
            {
                return;
            }
            ObservableCollection <UnknowBill> checklist = new ObservableCollection <UnknowBill>();

            foreach (UnknowBill item in Depositclient.SelectUnKownJG_Deposit(null))
            {
                if (item.UB_State == "N")
                {
                    checklist.Add(item);
                }
            }
            decimal money = 0;

            foreach (UnknowBill item in checklist)
            {
                money = money + item.UB_Money.Value;
            }
            request.AccoutCheckInstr = vm.BillInstruction;
            request.AccountBalance   = money;//账务余额
            try
            {
                response = SendMessage <Response01>(request, VMHelp.PointCode, VMHelp.UserCode);
            }
            catch (Exception e)
            {
                System.Windows.MessageBox.Show(e.Message);
                return;
            }

            if (response.ReturnCode == Tools.PublicData.ResponseSuccess)
            {
                VMHelp.ShowMessage("对账成功", true);
            }
            else
            {
                ;
                VMHelp.ShowMessage(Tools.HelpClass.Current.MsgDIC[response.ReturnCode], false);
            }
        }