SVCS - English Documentation
Loading...
Searching...
No Matches
NetworkUtils.hxx
Go to the documentation of this file.
1
9#pragma once
10
11#include <string>
12#include <cstdint>
13
14#ifdef _WIN32
15 #include <winsock2.h>
16 #include <ws2tcpip.h>
17 #include <windows.h>
18 #pragma comment(lib, "ws2_32.lib")
19#else
20 #include <sys/socket.h>
21 #include <netinet/in.h>
22 #include <arpa/inet.h>
23 #include <netdb.h>
24 #include <unistd.h>
25 #include <fcntl.h>
26 #include <sys/stat.h>
27 #include <errno.h>
28#endif
29
42 * @russian
43 * Слой абстракции платформы
44 * Это пространство имен содержит кросс-платформенные обертки для функциональности
45 * операционной системы, позволяя коду работать без изменений на Windows,
46 * Linux, macOS и других POSIX-системах.
47 */
48namespace svcs::platform {
49
50#ifdef _WIN32
51 typedef SOCKET SocketHandle;
52#define INVALID_SOCKET_HANDLE INVALID_SOCKET
53#define SOCKET_ERROR_CODE WSAGetLastError()
54#else
55 typedef int SocketHandle;
56#define INVALID_SOCKET_HANDLE (-1)
57#define SOCKET_ERROR_CODE errno
58#endif
59
64 bool initializeNetwork();
65
69 void cleanupNetwork();
70
77 SocketHandle createServerSocket(const std::string& host, uint16_t port);
78
83 void closeSocket(SocketHandle sock);
84
90 bool setSocketNonBlocking(SocketHandle sock);
91
97 std::string getClientIpFromSocket(SocketHandle sock);
98
101
104 SocketHandle acceptConnection(SocketHandle serverSocket);
105
106}
Platform abstraction layer.
Definition NetworkUtils.hxx:42
void cleanupNetwork()
Cleanup network subsystem (Windows only)
Definition NetworkUtils.cxx:28
std::string getClientIpFromSocket(SocketHandle sock)
Get client IP from socket.
Definition NetworkUtils.cxx:119
bool setSocketNonBlocking(SocketHandle sock)
Set socket non-blocking.
Definition NetworkUtils.cxx:108
SocketHandle acceptConnection(SocketHandle serverSocket)
Accept a connection on a socket.
Definition NetworkUtils.cxx:132
SocketHandle createServerSocket(const std::string &host, uint16_t port)
Create server socket.
Definition NetworkUtils.cxx:37
bool initializeNetwork()
Initialize network subsystem (Windows only)
Definition NetworkUtils.cxx:13
void closeSocket(SocketHandle sock)
Close socket.
Definition NetworkUtils.cxx:98