Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / 2 / lab.05.by mice / spice / src / cdm_addr_info
.h/*******************************************************************************
* file: cdm_addr_info.h *
* version: 0.9.0 *
* author: d-evil [tmd] (mailto:d-evil.tmd@mail.ru) *
* description: not available *
*******************************************************************************/
#ifndef CDM_ADDR_INFO_INCLUDED
#define CDM_ADDR_INFO_INCLUDED
#include <afx.h>
#include <malloc.h>
#include <winsock2.h>
#include <Ws2tcpip.h>
////////////////////////////////////////////////////////////////////////////////
// cdm_addr_info declaration
class cdm_addr_info {
public:
////////////////////////////////////////////////////////////////////////////
// error codes [-5000...-5099]
static const int ERC_CANTRESOLVE = -5005;
static const int ERC_NOMEM = -5010;
static const int ERC_WSA = -5066;
cdm_addr_info();
cdm_addr_info(const char *const host, const unsigned short port);
~cdm_addr_info();
in_addr ip() const { return _saddr_in.sin_addr; }
unsigned short port() const { return ntohs(_saddr_in.sin_port); }
int afam() const { return _saddr_in.sin_family; }
char *ip_str() const { return _ip_str; }
char *port_str() const { return _port_str; }
char *host() const { return _host; }
sockaddr *saddr() { return (sockaddr *)&_saddr_in; }
sockaddr_in *saddrin() { return &_saddr_in; }
int saddr_sz() const { return sizeof(_saddr_in); }
addrinfo *info(const int index = 0);
int set(const sockaddr_in *const saddrin);
int set(const char *const host, const unsigned short port);
int set_port(const unsigned short port);
int set_host(const char *const host);
int set_ip(const unsigned int ip);
int set_to_local(const unsigned short port = 0xDEAD);
// return 0 on success and -1 on error
static int resolve_host(const char *const host, in_addr *const addr);
protected:
void _init();
int _set_ip(const in_addr ip);
int _updt_host();
int _updt_addr_info(char *const host = NULL);
private:
static const int MX_PORTLEN = 8;
static const int MX_LOCAL_HOST_LEN = 256;
sockaddr_in _saddr_in;
char *_ip_str;
char *_port_str;
char *_host;
addrinfo *_addr_info;
};
#endif
Соседние файлы в папке src