Наерно интересует нечто навроде следующего (даю токо кусочек проги... тебе токо начало-то и надо (впрочем до конца эту прогу я так и не дописал))
| Код | SOCKET s = socket(AF_INET, SOCK_RAW, 1);
if (s == INVALID_SOCKET) { WSAGetLastError(); return 0; }
unsigned int iTrue=1;
if(setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char*)&iTrue, sizeof(iTrue)) == SOCKET_ERROR) { WSAGetLastError(); return 0; }
typedef struct _ICMPHeader { unsigned char ICMPType; unsigned char ICMPCode; // Type sub code unsigned short ICMPChecksum; union { struct {unsigned char uc1,uc2,uc3,uc4;} sUC; struct {unsigned short us1,us2;} sUS; unsigned long sUL; } sICMP; unsigned long ICMP_Originate_Timestamp; // Not standard field in header, but reserved nonetheless unsigned long ICMP_Receive_Timestamp; unsigned long ICMP_Transmit_Timestamp; } ICMPHeader;
typedef ICMPHeader FAR * LPICMPHeader; #define ICMPHeaderLength sizeof(ICMPHeader)
typedef struct _IpHeader { unsigned char HeaderLength_Version; unsigned char TypeOfService; // Type of service unsigned short TotalLength; // total length of the packet unsigned short Identification; // unique identifier unsigned short FragmentationFlags; // flags unsigned char TTL; // Time To Live unsigned char Protocol; // protocol (TCP, UDP etc) unsigned short CheckSum; // IP Header checksum
unsigned int sourceIPAddress; // Source address unsigned int destIPAddress; // Destination Address
} IpHeader;
typedef IpHeader FAR * LPIpHeader;
#define IpHeaderLength sizeof(IpHeader)
LPICMPHeader lpHead;
|
|