FIX разделитель сообщений
Я относительно новичок в FIX-протоколе.
Разделитель для сообщения FIX-Protocol иногда показывает ^ и другие времена |. Википедия по FIX-протоколу говорит [SOH]
( < Начало заголовка > для шестнадцатеричного 0x01) является символом.
Пожалуйста, объясните значение того же самого.
Например, сообщение протокола FIX может быть визуально представлено как
8=FIX.4.4^9=122^35=D^34=215^49=CLIENT12^52=20100225-19:41:57.316^56=B^1=Marcel^11=13346^21=1^40=2^44=5^54=1^59=0^60=20100225-19:39:52.020^10=072^
или же
8=FIX.4.4|9=122|35=D|34=215|49=CLIENT12|52=20100225-19:41:57.316|56=B|1=Marcel|11=13346|21=1|40=2|44=5|54=1|59=0|60=20100225-19:39:52.020|10=072|
Так в чем же разница при использовании ^ над |
Существуют ли и другие разделители? Не понятно почему [SOH]
(0x01) подходит для ^ или |
Это могло быть цифрой ОДИН.
2 ответа
Разделитель SOH = ASCII code 01 является непечатным символом. Глядя на двоичное представление сообщения (например, в виде шестнадцатеричного редактора), вы увидите символ как 0x01. Для отображения сообщений, кажется, что некоторые люди используют |
и другое использование ^
которые редко используются символы и, следовательно, хороший разделитель.
С использованием |
характер только для визуального удобства, легче читать, чем ^A
cat your.file.fix | tr '\01' '|' | less
Вы можете легко преобразовать вышеупомянутую команду как собственный сценарий оболочки для открытия файлов сессий FIX
~/.bashrc
function fixlog {
cat $* | tr '\01' '|' | less
}
Сообщения FIX всегда имеют 0x01 между полями в сообщении, будь то по проводам, в OMS/EMS или в файле журнала. Подстановка выполняется только в том случае, если необходимо отобразить сообщение (ОК, некоторые люди могут сделать свои файлы журнала чистыми и, таким образом, записать символ). Никогда не бывает, чтобы в действительном сообщении FIX имелись каналы или каретки, разделяющие поля. Это также тот случай, когда сообщение FIX никогда не будет где-либо, кроме полей. (это символ, который не должен появляться в печатном тексте - сообщения FIX должны быть читаемыми - и он не будет конфликтовать с тем, что завершает строку C, поэтому все сообщение можно рассматривать как строку, если вы склонны.)