2014-05-22 58 views
0

任何人誰可以幫忙,FIX協議4.4連接不響應登錄

我有一個演出停止連接到測試服務器的問題。

我的TCP/IP連接是通過建立:

插座_socket =新的Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

我經由發送連接消息給服務器:

_socket.Send(_txData);

其中_txData是一個字節[] _txData陣列與所述連接請求消息初始化:

8 = FIX.4.4 \ 0019 = 121 \ 00135 = A \ 00149 = NotRealSenderID \ 0 0156 = NotRealTargetID \ 00134 = 1 \ 00152 = 20140522-20:12:04.392 \ 00198 = 0 \ 001108 = 30 \ 001554 = NotRealPassw ord \ 00110 = 017 \ 001轉換爲字節數組。

我經由等待登錄成功消息:

INT responseCount = _socket.Receive(_rxBuffer);

但幾秒鐘後,_socket.Receive解鎖並返回零字節,表明連接不成功。

我在做什麼錯?

我的登錄信息有問題嗎?這是我建立服務器連接的方式嗎?我很茫然!

目前,我默認的Windows 7防火牆被禁用,我嘗試遠程登錄到服務器,下面的圖片快照的結果:

enter image description here

任何幫助將不勝感激,因爲這是一個主要表演塞給我。

謝謝。

回答

0

我設法解決了這個問題。問題在於我的消息中SOH字符。我正在使用文字SOH =「\ 001」轉換爲一個字節,當我應該這樣做時:SOH =(char)0x1; DUH!

爲了記錄在案,我用下面的工具「調試」本次發行:

Wireshark的帶顯示過濾器和捕獲過濾器設置爲主機服務器的IP地址,以及MINI-FIX來生成和發送FIX消息主機服務器。

然後,我通過Wireshark將我的客戶端的輸出與由MINI-FIX生成的輸出進行比較。從那裏發現錯誤並不需要很長時間。

+0

如何在telnet中輸入'0x1' SOH? – TangMonk

+0

將\ x附加到字節的開頭。例如「\ X01」。 – guerillacodester

+0

用\ x01替換SOH?像這樣?8 = FIX.4.4 \ x019 = 103 \ x0135 = A \ x149 = Q142 \ x0156 = XCD1 \ x0134 = 240 \ x0152 = 20171009-03:26:20 \ x0198 = 0 \ x01108 = 30 \ x01553 = primexm_hgnh_uat_1_q \ x01554 = tVN84Y93THc5 \ x0110 = 253 \ x01',似乎不起作用。 – TangMonk

0

什麼是「測試服務器」?
你可以ping它嗎?

從該telnet會話的外觀來看,您沒有建立連接的權限,或者目標上沒有任何內容在運行。

+0

問題已解決。見上面。感謝您的幫助,tho。 – guerillacodester