⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 net_addr.h

📁 实时监控
💻 H
字号:
#ifndef _NET_ADDR_H
#define _NET_ADDR_H

#include "../common.h"
#include "is.h"

/// SOCKADDR 功能封装
//##ModelId=3F9A1D250165
struct net_addr
{
private:
	//##ModelId=3F9A1D25017A
	SOCKADDR_IN ad;

public:
	//##ModelId=3F9A1D250183
	net_addr(){ ZeroMemory(&ad, sizeof(ad)); ad.sin_family = AF_INET;}
	//##ModelId=3F9A1D250184
	net_addr(const net_addr& na)
	{
		*this = na;
	}
	//##ModelId=3F9A1D25018D
	net_addr(LPCTSTR ip, USHORT p)
	{
		ZeroMemory(&ad, sizeof(ad));
		ad.sin_family = AF_INET;
		if( ip )
			ad.sin_addr.s_addr = inet_addr(ip);
		else
			ad.sin_addr.s_addr = htonl(INADDR_ANY);
		ad.sin_port = p;
	}

	//##ModelId=3F9A1D250198
	net_addr(ULONG ip, USHORT p)
	{
		ZeroMemory(&ad, sizeof(ad));
		ad.sin_family = AF_INET;
		set_ip(ip);
		set_real_port(p);
	}
	//##ModelId=3F9A1D2501AB
	void set_ip(LPCTSTR ip){if( !ip ) {set_ip((DWORD)0); return;} set_ip(inet_addr(ip));}
	//##ModelId=3F9A1D2501B5
	void set_ip(DWORD ip){ad.sin_addr.s_addr = ip;}
	//void set_port(USHORT p){ad.sin_port = htons(p);}
	//##ModelId=3F9A1D2501BF
	void set_look_port(USHORT p) {ad.sin_port = htons(p);}
	//##ModelId=3F9A1D2501C9
	void set_real_port(USHORT p) {ad.sin_port = p;}
//	void set_addr(LPCTSTR ip, USHORT p){set_ip(ip);	set_port(p);}

	//##ModelId=3F9A1D2501D3
	net_addr& operator =(const net_addr& na)
	{
		if( &na == this )
			return *this;

		memcpy(this, &na, sizeof(net_addr));
		return *this;
	}

	//##ModelId=3F9A1D2501DD
	operator sockaddr*() {return (sockaddr*)&ad;}
	//##ModelId=3F9A1D2501DE
	operator LPSOCKADDR*() {return (LPSOCKADDR*)&ad;}
	//##ModelId=3F9A1D2501DF
	USHORT port() const {return ad.sin_port;}
	//##ModelId=3F9A1D2501E8
	DWORD ip() const {return ad.sin_addr.s_addr;}
	//##ModelId=3F9A1D2501F1
	static int size() {return sizeof(SOCKADDR_IN); }
};
#endif	// _NET_ADDR_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -