代码拉取完成,页面将自动刷新
#pragma once
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "Commn.hpp"
namespace Inet_Addr
{
class InetAddr
{
private:
void Host2Net()//如果先拿到主机,我们希望转向网络
{
_net_addr.sin_family = AF_INET;
_net_addr.sin_port = ::htons(_port);
_net_addr.sin_addr.s_addr = INADDR_ANY;
}
//如果先拿到网络,我们希望将地址转向主机
void PortNet2Host()
{
_port = ::ntohs(_net_addr.sin_port);
}
void IPNet2Host()
{
char buffer[64];
_ip = ::inet_ntop(AF_INET,&_net_addr.sin_addr,buffer,sizeof(_net_addr));
}
public:
InetAddr()
{}
InetAddr(const struct sockaddr_in& net_addr):_net_addr(net_addr)//如果先拿到网络,我们希望将地址转向主机
{
PortNet2Host();
IPNet2Host();
}
InetAddr(uint16_t port):_port(port)//如果先拿到主机,我们希望将地址转向网络
{
Host2Net();
}
uint16_t GetPort(){return _port;}
std::string& GetIP(){return _ip;}
struct sockaddr* NetAddr(){return CONV(&_net_addr);}
socklen_t NetAddrLen(){return sizeof(_net_addr);}
~InetAddr(){}
private:
struct sockaddr_in _net_addr; // 网络字节标准
uint16_t _port; // 主机标准
std::string _ip; // 主机标准
};
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。