NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
ports.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_UTIL_PORTS_HPP__
2#define NEFORCE_NETWORK_UTIL_PORTS_HPP__
3
11
13NEFORCE_BEGIN_NAMESPACE__
14
20
124struct NEFORCE_API ports : iobject<ports> {
129 enum raw : uint16_t {
130 UNDEF = 0,
131
132 FTP_DATA = 20,
133 FTP = 21,
134 SSH = 22,
135 TELNET = 23,
136 SMTP = 25,
137 DNS = 53,
140 TFTP = 69,
141 HTTP = 80,
142 WS = 80,
143 POP3 = 110,
144 NTP = 123,
145 IMAP = 143,
146 SNMP = 161,
147 SNMP_TRAP = 162,
148 LDAP = 389,
149 HTTPS = 443,
150 WSS = 443,
151 SMB = 445,
152 SMTPS = 465,
154 LDAPS = 636,
155 IMAPS = 993,
156 POP3S = 995,
157
158 MYSQL = 3306,
159 POSTGRESQL = 5432,
160 REDIS = 6379,
161 MONGODB = 27017
162 };
163
165
171 constexpr ports() noexcept = default;
172 ~ports() noexcept = default;
173
174 constexpr ports(const ports&) noexcept = default;
175 ports& operator=(const ports&) noexcept = default;
176
177 constexpr ports(ports&&) noexcept = default;
178 ports& operator=(ports&&) noexcept = default;
179
184 constexpr ports(const raw port) noexcept :
185 port(port) {}
186
191 constexpr explicit ports(const uint16_t port) noexcept :
192 // NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
193 port(static_cast<raw>(port)) {}
194
201 constexpr explicit operator bool() const noexcept { return port != ports::UNDEF; }
202
207 constexpr explicit operator uint16_t() const noexcept { return static_cast<uint16_t>(port); }
208
209 NEFORCE_NODISCARD constexpr uint16_t value() const noexcept { return static_cast<uint16_t>(port); }
210
215 NEFORCE_NODISCARD constexpr bool is_well_known() const noexcept { return static_cast<uint16_t>(port) <= 1023; }
216
221 NEFORCE_NODISCARD constexpr bool is_registered() const noexcept {
222 auto p = static_cast<uint16_t>(port);
223 return p >= 1024 && p <= 49151;
224 }
225
230 NEFORCE_NODISCARD constexpr bool is_dynamic() const noexcept { return static_cast<uint16_t>(port) >= 49152; }
231
239 static ports parse(string_view scheme) noexcept;
240
248 NEFORCE_NODISCARD string to_string() const;
249
258 NEFORCE_NODISCARD string to_string(bool is_ws) const;
259};
260
261
262NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const ports lhs, const uint16_t rhs) noexcept {
263 return lhs.port == static_cast<ports::raw>(rhs);
264}
265
266NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const uint16_t lhs, const ports rhs) noexcept {
267 return static_cast<ports::raw>(lhs) == rhs.port;
268}
269
270NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const ports lhs,
271 const ports::raw rhs) noexcept {
272 return lhs.port == rhs;
273}
274
275NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const ports::raw lhs,
276 const ports rhs) noexcept {
277 return lhs == rhs.port;
278}
279
280NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const ports lhs, const ports rhs) noexcept {
281 return lhs.port == rhs.port;
282}
283
284NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const ports lhs, const uint16_t rhs) noexcept {
285 return lhs.port != static_cast<ports::raw>(rhs);
286}
287
288NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const uint16_t lhs, const ports rhs) noexcept {
289 return static_cast<ports::raw>(lhs) != rhs.port;
290}
291
292NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const ports lhs,
293 const ports::raw rhs) noexcept {
294 return lhs.port != rhs;
295}
296
297NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const ports::raw lhs,
298 const ports rhs) noexcept {
299 return lhs != rhs.port;
300}
301
302NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const ports lhs, const ports rhs) noexcept {
303 return lhs.port != rhs.port;
304}
305 // NetworkUtil
307
308NEFORCE_END_NAMESPACE__
309#endif // NEFORCE_NETWORK_UTIL_PORTS_HPP__
unsigned short uint16_t
16位无符号整数类型
bool operator!=(const function< Res(Args...)> &f, nullptr_t np) noexcept
不等于空指针比较
bool operator==(const function< Res(Args...)> &f, nullptr_t np) noexcept
等于空指针比较
basic_string_view< char > string_view
字符字符串视图
可解析对象接口
可解析对象接口
网络端口封装类
constexpr bool is_well_known() const noexcept
检查端口是否在知名端口范围内
constexpr ports(const uint16_t port) noexcept
从uint16_t构造
constexpr bool is_registered() const noexcept
检查端口是否在注册端口范围内
raw
端口号枚举值
@ UNDEF
未定义/无效端口
@ SMB
SMB/CIFS协议端口
@ FTP_DATA
FTP数据端口
@ DHCP_CLIENT
DHCP客户端端口
@ SMTPS
SMTPS协议端口
@ LDAP
LDAP协议端口
@ DNS
DNS协议端口
@ FTP
FTP控制端口
@ SNMP
SNMP协议端口
@ MONGODB
MongoDB数据库端口
@ POP3S
POP3S协议端口
@ LDAPS
LDAPS协议端口
@ SNMP_TRAP
SNMP陷阱通知端口
@ POSTGRESQL
PostgreSQL数据库端口
@ SMTP
SMTP协议端口
@ SMTP_SUBMIT
SMTP邮件提交端口
@ REDIS
Redis数据库端口
@ WS
WebSocket协议端口(与HTTP共用)
@ IMAPS
IMAPS协议端口
@ IMAP
IMAP协议端口
@ DHCP_SERVER
DHCP服务器端口
@ HTTP
HTTP协议端口
@ SSH
SSH协议端口
@ TFTP
TFTP协议端口
@ MYSQL
MySQL数据库端口
@ HTTPS
HTTPS协议端口
@ WSS
WebSocket Secure端口(与HTTPS共用)
@ TELNET
Telnet协议端口
@ POP3
POP3协议端口
@ NTP
NTP协议端口
raw port
端口值
string to_string() const
转换为协议名称字符串
string to_string(bool is_ws) const
转换为协议名称字符串(支持WebSocket)
constexpr ports() noexcept=default
默认构造函数
constexpr bool is_dynamic() const noexcept
检查端口是否在动态/私有端口范围内
static ports parse(string_view scheme) noexcept
从协议名称解析端口