Главная страница
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.47 MB
Время: 0.007 c
15-1386621002
Юрий
2013-12-10 00:30
2014.06.22
С днем рождения ! 10 декабря 2013 вторник


15-1386684142
aka
2013-12-10 18:02
2014.06.22
Книги о методах трансляции


15-1385982908
брат Птибурдукова
2013-12-02 15:15
2014.06.22
Новый шаблон ответа в "начинающих"


15-1378911726
p
2013-09-11 19:02
2014.06.22
RAD Studio XE5


15-1386575834
oldman
2013-12-09 11:57
2014.06.22
С днем рождения!