Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 2 / lab.03.by mice / claw / cdm_addr_info

.h
Скачиваний:
10
Добавлен:
17.04.2013
Размер:
2.17 Кб
Скачать
/*******************************************************************************
* 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 <winsock2.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); }

	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_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:
	int _set_ip(const in_addr ip);
	int _updt_host();

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;
};



#endif
Соседние файлы в папке claw