Как рассчитать правильную контрольную сумму для исправленных сообщений?
Следующий код получает сообщения об успешном входе в систему, но когда я отправляю запрос котировки во 2-м сообщении, он не отвечает и посылает мне Сердцебиение через 30 секунд.Кто-то сказал мне, что я неправильно вычисляю контрольную сумму, поэтому Fix-server игнорирует сообщение price-request.Можете ли вы дать мне какую-нибудь подсказку, почему это не работает для 2-го сообщения?
Что я уже пробовал:
public static int total; time = DateTime.UtcNow.ToString("yyyyMMdd-HH:mm:ss.fff"); body = "35=V|49=" + FixID + "|56=CSERVER|34="+msgSeqenceNum+"|52=" + time + "|50=QUOTE|57=QUOTE|262=13203481x|263=1|264=1|265=1|146=1|55=1|267=2|269=0|269=1|"; // body length bodylen = body.Length; string fix = "8=FIX.4.4|9=" + bodylen + "|"; // message message = fix + body; message = message.Replace('|', '\u0001'); int total2 = 0; messageBytes = Encoding.ASCII.GetBytes(message);//converted to 0's &1s for (int i = 0; i < message.Length; i++) total2 += messageBytes[i]; checksum = total2 % 256; checksumStr = checksum.ToString().PadLeft(3, '0'); sum = "10=" + checksumStr + "|"; m = fix + body + sum; m = m.Replace('|', '\u0001');
Graeme_Grant
Что говорится в документации службы хоста относительно расчета?
Viswash Manik
Привет, Грэм, значение контрольной суммы было рассчитано в соответствии со стандартными рекомендациями по исправлению ошибок.