📄 net_addr.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 + -