JwaProtocol.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:5k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Winsock2 Protocol Definitions API interface Unit for Object Pascal           }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: protocol.h, released June 2000. The original Pascal    }
  9. { code is: Protocol.pas, released December 2000. The initial developer of the  }
  10. { Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaProtocol;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "protocol.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51. {$IFDEF STANDALONE}
  52.   JwaWinTypes;
  53. {$ELSE}
  54.   Windows;
  55. {$ENDIF}
  56. type
  57.   ETHERNET_ADDRESS = array [0..5] of BYTE;
  58.   {$EXTERNALSYM ETHERNET_ADDRESS}
  59.   ETHERNET_FRAME = record
  60.    Destination: ETHERNET_ADDRESS;
  61.     Source: ETHERNET_ADDRESS;
  62.     FrameType: WORD; // in host-order
  63.   end;
  64.   {$EXTERNALSYM ETHERNET_FRAME}
  65.   TEthernetFrame = ETHERNET_FRAME;
  66.   PEthernetFrame = ^TEthernetFrame;
  67. const
  68.   ETHERNET_FRAME_TYPE_IP = $0800;
  69.   {$EXTERNALSYM ETHERNET_FRAME_TYPE_IP}
  70. type
  71.   IP_HEADER = record
  72.     x: BYTE;
  73.     tos: BYTE;
  74.     length: WORD;
  75.     identifier: WORD;
  76.     fragment: WORD;
  77.     ttl: BYTE;
  78.     protocol: BYTE;
  79.     cksum: WORD;
  80.     src: DWORD;
  81.     dest: DWORD;
  82.   end;
  83.   {$EXTERNALSYM IP_HEADER}
  84.   LPIP_HEADER = ^IP_HEADER;
  85.   {$EXTERNALSYM LPIP_HEADER}
  86.   TIPHeader = IP_HEADER;
  87.   PIPHeader = LPIP_HEADER;
  88. const
  89.   IP_MF = $2000;
  90.   {$EXTERNALSYM IP_MF}
  91.   IP_FRAGMENT_OFFSET_MASK = $1FFF;
  92.   {$EXTERNALSYM IP_FRAGMENT_OFFSET_MASK}
  93.   IP_HEADER_MINIMUM_LEN = 20;
  94.   {$EXTERNALSYM IP_HEADER_MINIMUM_LEN}
  95. type
  96.   UDP_HEADER = record
  97.     src_port: WORD;
  98.     dest_port: WORD;
  99.     length: WORD; // including this header
  100.     checksum: WORD;
  101.   end;
  102.   {$EXTERNALSYM UDP_HEADER}
  103.   TUDPHeader = UDP_HEADER;
  104.   PUDPHeader = ^TUDPHeader;
  105. const
  106.   UDP_HEADER_LEN = 8;
  107.   {$EXTERNALSYM UDP_HEADER_LEN}
  108. implementation
  109. end.