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
26
130struct NEFORCE_API ports : iobject<ports> {
135 enum raw : uint16_t {
136 UNDEF = 0,
137
138 FTP_DATA = 20,
139 FTP = 21,
140 SSH = 22,
141 TELNET = 23,
142 SMTP = 25,
143 DNS = 53,
146 TFTP = 69,
147 HTTP = 80,
148 WS = 80,
149 POP3 = 110,
150 NTP = 123,
151 IMAP = 143,
152 SNMP = 161,
153 SNMP_TRAP = 162,
154 LDAP = 389,
155 HTTPS = 443,
156 WSS = 443,
157 SMB = 445,
158 SMTPS = 465,
160 LDAPS = 636,
161 IMAPS = 993,
162 POP3S = 995,
163
164 MYSQL = 3306,
165 POSTGRESQL = 5432,
166 REDIS = 6379,
167 MONGODB = 27017
168 };
169
171
177 constexpr ports() noexcept = default;
178
183 constexpr ports(const raw port) noexcept :
184 port(port) {}
185
190 constexpr explicit ports(const uint16_t port) noexcept :
191 port(static_cast<raw>(port)) {}
192
199 constexpr explicit operator bool() const noexcept { return port != ports::UNDEF; }
200
205 constexpr explicit operator uint16_t() const noexcept { return static_cast<uint16_t>(port); }
206
207 constexpr uint16_t value() const noexcept { return static_cast<uint16_t>(port); }
208
213 constexpr bool is_well_known() const noexcept { return static_cast<uint16_t>(port) <= 1023; }
214
219 constexpr bool is_registered() const noexcept {
220 auto p = static_cast<uint16_t>(port);
221 return p >= 1024 && p <= 49151;
222 }
223
228 constexpr bool is_dynamic() const noexcept { return static_cast<uint16_t>(port) >= 49152; }
229
237 static ports parse(string_view scheme) noexcept;
238
246 string to_string() const;
247
256 string to_string(bool is_ws) const;
257};
258
259
260NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const ports lhs, const uint16_t rhs) noexcept {
261 return lhs.port == static_cast<ports::raw>(rhs);
262}
263
264NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const uint16_t lhs, const ports rhs) noexcept {
265 return static_cast<ports::raw>(lhs) == rhs.port;
266}
267
268NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const ports lhs,
269 const ports::raw rhs) noexcept {
270 return lhs.port == rhs;
271}
272
273NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const ports::raw lhs,
274 const ports rhs) noexcept {
275 return lhs == rhs.port;
276}
277
278NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator==(const ports lhs, const ports rhs) noexcept {
279 return lhs.port == rhs.port;
280}
281
282NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const ports lhs, const uint16_t rhs) noexcept {
283 return lhs.port != static_cast<ports::raw>(rhs);
284}
285
286NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const uint16_t lhs, const ports rhs) noexcept {
287 return static_cast<ports::raw>(lhs) != rhs.port;
288}
289
290NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const ports lhs,
291 const ports::raw rhs) noexcept {
292 return lhs.port != rhs;
293}
294
295NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const ports::raw lhs,
296 const ports rhs) noexcept {
297 return lhs != rhs.port;
298}
299
300NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE_INLINE constexpr bool operator!=(const ports lhs, const ports rhs) noexcept {
301 return lhs.port != rhs.port;
302}
303 // NetworkUtil
305 // Network
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
从协议名称解析端口