muduo 12 InetAddress地址

文章介绍了InetAddress类的使用,该类用于封装socket地址类型,提供构造函数接收IP地址和端口号,以及网络字节序到主机字节序的转换方法。InetAddress::toPort()用于网络字节序转主机字节序,toIpPort()则将IP和端口组合成字符串格式。此外,还展示了Timestamp类如何表示和转换时间。

目录

成员参数:

构造函数: 

InetAddress::toPort()网络字节序转主机字节序

InetAddress::toIpPort()转string格式地址

InetAddress.h

InetAddress.cc


需要先定义一个对象来打包IP地址跟端口号来作为TCP server对象的构造函数的参数.

成员参数:

       sockaddr_in结构的对象:

构造函数: 

       explicit:修饰类的构造函数,防止隐式类型转换,要求显示地使用构造函数进行对象的创建。

构造函数只能以直接初始化的方式调用,不能进行隐式的拷贝化或列表初始化。

①:直接传入;

②:使用 inet_ntop()函数将addr中数据传入。

InetAddress::toPort()网络字节序转主机字节序

         在大多数情况下,网络协议和通信中使用的是大端字节序,而主机的字节序可能是大端或小端,因此需要进行字节序的转换。

InetAddress::toIpPort()转string格式地址

组合成 ip :port返回字符串格式

InetAddress.h

#pragma once

#include <arpa/inet.h>
#include <netinet/in.h>
#include <string>

 //封装socket地址类型
 class InetAddress
 {
public:
    // explicit 方式隐式构造
    //构造函数
    explicit InetAddress(uint16_t port, std::string ip = "127.0.0.1");
    explicit InetAddress(const sockaddr_in &addr) : addr_(addr) {};


    std::string toIp() const;
    uint16_t toPort() const;
    std::string toIpPort() const;

    const sockaddr_in* getsockAddr() const {return &addr_;}

private:
    sockaddr_in addr_;
 };

InetAddress.cc

#include "Timestamp.h"
#include <time.h>

Timestamp::Timestamp()
    :microSecondsSinceRpoch_(0)
    {}

// 带参数的构造函数
Timestamp::Timestamp(int64_t microSecondsSinceRpoch)
    : microSecondsSinceRpoch_(microSecondsSinceRpoch)
    {}

//显示当前时间 
Timestamp Timestamp::now()
{
    time_t timenow = time(NULL);
    return Timestamp(timenow);
}

//格式转化方法 将字符串转化成时间字符串
std::string Timestamp::toString() const
{
    char buf[128] = {0};
    tm * tm_time = localtime(&microSecondsSinceRpoch_);
    snprintf(buf,128,"%4d/%02d/%02d %02d:%02d:%02d",
    tm_time->tm_year + 1900,
    tm_time->tm_mon + 1,
    tm_time->tm_mday,
    tm_time->tm_hour,
    tm_time->tm_min,
    tm_time->tm_sec
    );
    return buf;
}

#include <iostream>
int main()
{
    std::cout<<Timestamp::now().toString()<<std::endl;
    return 0;
}

一些字符串到网络字节序的转换。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值