2013-10-01 83 views
0

所以現在我正在構建ISO8583支付網關應用程序。此應用程序是一個可以充當客戶端或服務器的客戶端 - 服務器應用程序。在這種情況下,我正在處理應用程序的客戶端。錯誤代碼67 ISO8583

首先,我將(客戶端)應用連接到外部服務器。我正在發送詢問消息,並且運行良好(返回成功消息)。然後,我試圖運行這個應用程序作爲客戶端和服務器(運行2個應用程序,並將我的IP作爲IP主機),一個作爲客戶端,另一個作爲服務器。我正在發送詢問消息,並且它一直返回響應代碼67(其他錯誤)。與此同時,當我僅將應用程序作爲客戶端運行時,它會成功

我不知道是否有幫助,但這裏的查詢方法

/// <summary> 
    /// Send Inquiry Message 
    /// </summary> 
    private void SendInquiryMessage() 
    { 
     var requestMsg = new Iso8583Message(200); 
     DateTime transmissionDate = DateTime.Now; 
     requestMsg.Fields.Add(7, string.Format("{0}{1}", 
      string.Format("{0:00}{1:00}", transmissionDate.Month, transmissionDate.Day), 
      string.Format("{0:00}{1:00}{2:00}", transmissionDate.Hour, 
       transmissionDate.Minute, transmissionDate.Second))); 
     requestMsg.Fields.Add(11, _sequencer.Increment().ToString()); 
     requestMsg.Fields.Add((int)ISO8583ProtocolFields.PROCESSING_CODE, "341019"); 
     requestMsg.Fields.Add((int)ISO8583ProtocolFields.ADDITIONAL_DATA_61, "5271720012002010802012"); 

     #region Send 0200 
     SendRequestHandlerCtrl sndCtrl = _client.SendExpectingResponse(requestMsg, 1000, true, null); 
     sndCtrl.WaitCompletion(); // Wait send completion. 
     if (!sndCtrl.Successful) 
     { 
      Console.WriteLine(string.Format("Client: unsuccessful request # {0} ({1}.", 
       _sequencer.CurrentValue(), sndCtrl.Message)); 
      if (sndCtrl.Error != null) 
       Console.WriteLine(sndCtrl.Error); 
     } 
     else 
     { 
      sndCtrl.Request.WaitResponse(); 

      if (sndCtrl.Request.IsExpired) 
       _expiredRequests++; 
      else 
       _requestsCnt++; 
     } 

     latestInquiryMessage = sndCtrl.Request.ReceivedMessage as Iso8583Message; 

     Console.WriteLine(latestInquiryMessage.Fields[39].Value); 

     #endregion 

    } 

任何人都知道問題是什麼?我可能會錯過什麼?

謝謝!

回答

0

我不知道您試圖寫入哪個特定的ISO-8583實現,但根據我所看到或看不到的內容以及您的實際問題是什麼進行猜測。 當它作爲客戶端與遠程服務器進行通信時,它的工作原理似乎特別奇怪,但不是兩者。你的通訊配置在哪裏?

這指向您的TCP/IP配置,我的猜測是您試圖在可能是相同的端口上偵聽和通信,因此並不真正完成TCP/IP握手。雖然我相信你在技術上可以聽取港口信息,並將其用於不同的流程,但我認爲這不必要地使事情複雜化。

所以我猜測是發生了什麼,是你的問題是,你正試圖與自己溝通,都可能沒有得到完全連接,取而代之的說:「91 - 發行人不可用」或「96 - 系統錯誤「,它會給你奇怪的」67其他錯誤「,因爲它可能無法真正發送它。

您是否有蹤跡,或者您是否已經觀察過與netstat -a 1或更好的Wireshark的連接,如果您沒有跟蹤來驗證您已完全建立?