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("所提供的服务器连接超时"); } }
/// <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); } }