Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / 2 / lab.04.by mice / hail / cdm_hailer
.h/*******************************************************************************
* file: cdm_hailer.h *
* version: 0.9.0 *
* author: d-evil [tmd] (mailto:d-evil.tmd@mail.ru) *
* description: not available *
*******************************************************************************/
#ifndef CDM_HAILER_INCLUDED
#define CDM_HAILER_INCLUDED
#include <malloc.h>
#include <winsock2.h>
#include <time.h>
#include "cdm_addr_info.h"
#include "check_sum.h"
////////////////////////////////////////////////////////////////////////////////
// icmp header declaration
struct icmp_h {
unsigned char type;
unsigned char code;
unsigned short check_sum;
unsigned short id;
unsigned short num;
};
////////////////////////////////////////////////////////////////////////////////
// icmp header declaration
struct ip_h{
unsigned char len:4;
unsigned char ver:4;
unsigned char type_of_service;
unsigned short total_len;
unsigned short id;
unsigned short flags;
unsigned char ttl;
unsigned char proto;
unsigned short checksum;
unsigned int sourceIP;
unsigned int destIP;
};
struct sdm_hail_res {
clock_t rtime;
unsigned int num;
unsigned char ttl;
};
////////////////////////////////////////////////////////////////////////////////
// cdm_hailer declaration
class cdm_hailer {
public:
cdm_hailer();
~cdm_hailer();
cdm_addr_info *iaddr() { return &_iaddr; }
sdm_hail_res *hail_reply() const { return _hail_res; }
int pckt_sz() const { return _pckt_sz; }
int set_pckt_sz(const int pckt_sz) { return _pckt_sz = pckt_sz; }
int mx_pckt_sz() const { return MX_BUF_SZ - sizeof(ip_h) - sizeof(icmp_h); }
int target(const char *const host, const int pckt_sz = DEF_PCKT_SZ);
int link();
int can_read(const int timeout = 200);
int hail_it(const int num = 0);
int listen_it(const int timeout_ms = 200);
private:
int _init();
int _free();
protected:
////////////////////////////////////////////////////////////////////////////
// protected constants
static const int ICMP_ECHO = 8;
static const int MX_BUF_SZ = 0xFFFF;
static const int DEF_PCKT_SZ = 32;
cdm_addr_info _iaddr;
char *_snd_buf;
char *_rcv_buf;
int _pckt_sz;
SOCKET _sock;
sdm_hail_res *_hail_res;
unsigned short _id;
};
#endif
Соседние файлы в папке hail