目录
InetAddress::toPort()网络字节序转主机字节序
InetAddress::toIpPort()转string格式地址
需要先定义一个对象来打包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(µSecondsSinceRpoch_);
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;
}
一些字符串到网络字节序的转换。
文章介绍了InetAddress类的使用,该类用于封装socket地址类型,提供构造函数接收IP地址和端口号,以及网络字节序到主机字节序的转换方法。InetAddress::toPort()用于网络字节序转主机字节序,toIpPort()则将IP和端口组合成字符串格式。此外,还展示了Timestamp类如何表示和转换时间。
8212

被折叠的 条评论
为什么被折叠?



