PING.H
上传用户:qzzxgm
上传日期:2009-12-14
资源大小:1882k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. //
  2. // Ping.h
  3. //
  4. #pragma pack(1)
  5. #define ICMP_ECHOREPLY 0
  6. #define ICMP_ECHOREQ 8
  7. #define REQ_DATASIZE 32 // Echo 请求数据的大小
  8. class CPing
  9. {
  10. public:
  11. HWND m_hWnd; //窗口句柄
  12. void Ping(UINT nRetries,LPCSTR pstrHost,HWND hWnd);
  13. int  WaitForEchoReply(SOCKET s);
  14. //ICMP回应的请求和回答函数
  15. int SendEchoRequest(SOCKET, LPSOCKADDR_IN);
  16. DWORD RecvEchoReply(SOCKET, LPSOCKADDR_IN, u_char *);
  17. u_short in_cksum(u_short *addr, int len);
  18. protected:
  19. void WSAError(LPCSTR pstrFrom);
  20. };
  21. // IP Header -- RFC 791
  22. typedef struct tagIPHDR
  23. {
  24. u_char  VIHL; // Version and IHL
  25. u_char TOS; // Type Of Service
  26. short TotLen; // Total Length
  27. short ID; // Identification
  28. short FlagOff; // Flags and Fragment Offset
  29. u_char TTL; // Time To Live
  30. u_char Protocol; // Protocol
  31. u_short Checksum; // Checksum
  32. struct in_addr iaSrc; // Internet Address - Source
  33. struct in_addr iaDst; // Internet Address - Destination
  34. }IPHDR, *PIPHDR;
  35. // ICMP Header - RFC 792
  36. typedef struct tagICMPHDR
  37. {
  38. u_char Type; // Type
  39. u_char Code; // Code
  40. u_short Checksum; // Checksum
  41. u_short ID; // Identification
  42. u_short Seq; // Sequence
  43. char Data; // Data
  44. }ICMPHDR, *PICMPHDR;
  45. // ICMP Echo Request
  46. typedef struct tagECHOREQUEST
  47. {
  48. ICMPHDR icmpHdr;
  49. DWORD dwTime;
  50. char cData[REQ_DATASIZE];
  51. }ECHOREQUEST, *PECHOREQUEST;
  52. // ICMP Echo Reply
  53. typedef struct tagECHOREPLY
  54. {
  55. IPHDR ipHdr;
  56. ECHOREQUEST echoRequest;
  57. char    cFiller[256];
  58. }ECHOREPLY, *PECHOREPLY;
  59. #pragma pack()