[岩禾溪] C++20项目 muduo网络库 项目实战 (2)InetAddress & Channel

目录

 ​本项目由 岩禾溪 原创

InetAddress.ixx

模块介绍

类 InetAddress:

C++20 新特性内容:

InetAddress.cpp

函数实现解释:

Channel.ixx

模块介绍

类 Channel:

Channel.cpp

模块导入和常量定义:

类 Channel 的函数实现:

关于注释部分:

更新Logger

Logger.ixx(更新)

 本项目由 岩禾溪 原创

项目实战+新特性用法介绍
开源代码+博客解析+视频讲解

GitHub+CSDN+BiliBili同步更新,三个平台同名【岩禾溪】

GitHub代码链接  GitHub - YanHeXi/muduo_cpp20

项目讲解视频连接:岩禾溪的个人空间-岩禾溪个人主页-哔哩哔哩视频

你的关注是我更新的最大动力

InetAddress.ixx

export module InetAddress;
export import <string>;
export import <arpa/inet.h>;
import <netinet/in.h>;

export class InetAddress
{
public:
    explicit InetAddress(uint16_t port = 0,
                         std::string_view ip = "127.0.0.1");

    explicit InetAddress(const sockaddr_in &addr)
        : addr_(addr) {}

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

    uint16_t toPort() const { return ntohs(addr_.sin_port); }

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

    void setSockAddr(const sockaddr_in &addr) { addr_ = addr; }

private:
    sockaddr_in addr_;
};

模块介绍

该模块名为 InetAddress,用于处理网络地址的表示和操作。它依赖于 C++20 中的模块特性进行导出和导入相关头文件,并提供网络地址的基本功能。

InetAddress

  • 构造函数

    • explicit InetAddress(uint16_t port = 0, std::string_view ip = "127.0.0.1");:这是一个构造函数,用于创建一个 InetAddress 类的实例。它接受一个端口号和一个 IP 地址字符串,默认情况下端口号为0,IP地址为 "127.0.0.1"。
  • 成员函数

    • std::string toIp() const;:返回当前 InetAddress 实例的 IP 地址字符串表示。
    • std::string toIpPort() const;:返回当前 InetAddress 实例的 IP 地址和端口号的组合字符串表示。
    • uint16_t toPort() const;:返回当前 InetAddress 实例的端口号。
    • const sockaddr_in *getSockAddr() const;:返回指向当前 InetAddress 实例中 sockaddr_in 结构的指针。
    • void setSockAddr(const sockaddr_in &addr);:设置当前 InetAddress 实例中的 sockaddr_in 结构。

C++20 新特性内容:

  1. Modules (模块)export module InetAddress;export/import 关键字用于导出和导入模块,将 InetAddress 类的定义和相关的头文件进行模块化管理。
  2. std::string_view<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值