Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.06.22;
Скачать: CL | DM;

Вниз

правильно подсчитать контрольную сумму IP пакета.   Найти похожие ветки 

 
Краб   (2010-05-03 11:55) [0]

Добрый день господа.
У меня возникла проблема в подсчёте чек суммы IP пакета перед отправкой.
Вот функция:

function Checksum(var Buffer; Size: word): WORD;
var i: Integer;
  Sum: DWORD;
  p: PWORD ;

begin
  p:=@Buffer;
 Sum := 0;
  for i := 0 to Size - 1 do
 begin
    Sum := Sum + htons(p^);
    inc(p);
 end;

 while (Sum shr 16) > 0 do
     Sum :=   (Sum and $FFFF)+(Sum shr 16);
 Sum := not Sum;
 Result := Sum;

end;

Вроде должно работать правильно, но в итоге тем же самым WireShark"ом , мы замечаем:

Checksum: 0x4b28 [incorrect, should be 0x284b (maybe caused by "UDP checksum offload"?)]

или

Checksum: 0x7728 [incorrect, should be 0x2877 (maybe caused by "UDP checksum offload"?)]

Есть у кого-нибудь догадки : что я сделал не так ? =)
(искал другие функции, но найти подобный рабочий вариант у меня не получилось)


 
Краб   (2010-05-03 14:18) [1]

ошибку нашёл сам .
удалите/закройте пожалуйста тему.



Страницы: 1 вся ветка

Текущий архив: 2014.06.22;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.007 c
1-1326116288
solomon
2012-01-09 17:38
2014.06.22
Запись класса в TStream


2-1377575039
Abcdef123
2013-08-27 07:43
2014.06.22
inherited; не работает. Как выполнить все события?


15-1386275402
Юрий
2013-12-06 00:30
2014.06.22
С днем рождения ! 6 декабря 2013 пятница


15-1386448204
Юрий
2013-12-08 00:30
2014.06.22
С днем рождения ! 8 декабря 2013 воскресенье


3-1298974464
Очень злой
2011-03-01 13:14
2014.06.22
не могу создать AdoConnection в потоке