Home › Forums › Discussions › Support › Modify packet [DELPHI] › Reply To: Modify packet [DELPHI]
June 26, 2004 at 5:58 am
#5578
Why i can’y calc TCP checksum? Please help
first, i decare this
TIPHeaderPtr = ^TIPHeader;
TIPHeader = packed record
VerLen: Byte; //HL
TOS: Byte;
TotalLen: Word;
Identifer: Word;
FragOffsets: Word;
TTL: Byte;
Protocol: Byte;
CheckSum: Word;
SourceIp: DWORD;
DestIp: DWORD;
// Options: DWORD;
end;
TTCPHeaderPtr = ^TTCPHeader;
TTCPHeader = packed record
SourcePort:Word;
DestPort:Word;
SequenceNumber:DWord;
AcknowledgementNumber:DWord;
Offset:Byte; //only left 4 bits. Header length in 32-bit segments
Flags:Byte;
Window:Word;
Checksum:Word; //includes speudo header instead of TCP header.
UrgentPointer:Word;
end;
pTCPData: PChar;
after that i get IP header and calc IP check sum is collect but why i can’t calc TCP checksum. the code like below.
pTCPHeader.Checksum := 00;
pTCPHeader.Checksum := htons(Checksum(Pword(pTCPHeader), (sizeof(TTCPHeader)+length(pTCPData)) div 2));
i forgot something? or i should not use PChar for get the TCP data?