UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BSDSocketTypesPrivate.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
9
10#if PLATFORM_HAS_BSD_SOCKETS
11
12#if PLATFORM_HAS_BSD_SOCKET_FEATURE_WINSOCKETS
14
15#include <winsock2.h>
16#include <ws2tcpip.h>
17
18typedef int32 SOCKLEN;
19#define strerror_r(errno,buf,len) strerror_s(buf,len,errno)
20
22#else // PLATFORM_HAS_BSD_SOCKET_FEATURE_WINSOCKETS
23#if HAS_EVENTLOOP_PLATFORM_BSD_SOCKET_HEADER
24#include COMPILED_PLATFORM_HEADER(BSDSocketTypesPrivate.h)
25#else // HAS_EVENTLOOP_PLATFORM_BSD_SOCKET_HEADER
26#include <unistd.h>
27#include <sys/socket.h>
28#if PLATFORM_HAS_BSD_SOCKET_FEATURE_IOCTL
29#include <fcntl.h>
30#include <sys/types.h>
31#include <sys/ioctl.h>
32#endif // PLATFORM_HAS_BSD_SOCKET_FEATURE_IOCTL
33#if PLATFORM_HAS_BSD_SOCKET_FEATURE_POLL
34#include <poll.h>
35#endif // PLATFORM_HAS_BSD_SOCKET_FEATURE_POLL
36#include <netinet/in.h>
37#include <arpa/inet.h>
38#if PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
39#include <netdb.h>
40#endif // PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
41#if PLATFORM_HAS_BSD_SOCKET_FEATURE_NODELAY
42#include <netinet/tcp.h>
43#endif // PLATFORM_HAS_BSD_SOCKET_FEATURE_NODELAY
44
45#if HAS_EVENTLOOP_NOTIFIER_EVENTFD && !HAS_PLATFORM_EVENTLOOP_NOTIFIER_EVENTFD
46#include <sys/eventfd.h>
47#endif // HAS_EVENTLOOP_NOTIFIER_EVENTFD
48
49#define ioctlsocket ioctl
50#endif // HAS_EVENTLOOP_PLATFORM_BSD_SOCKET_HEADER
51
52#define SOCKET_ERROR -1
53#define INVALID_SOCKET -1
54
55typedef socklen_t SOCKLEN;
56typedef int32 SOCKET;
58typedef struct timeval TIMEVAL;
59
60inline int32 closesocket(SOCKET Socket)
61{
62 shutdown(Socket, SHUT_RDWR); // gracefully shutdown if connected
63 return close(Socket);
64}
65
66#endif // PLATFORM_HAS_BSD_SOCKET_FEATURE_WINSOCKETS
67
68inline FString GetLastErrorString()
69{
70 constexpr uint32 BufferSize = 256;
71 ANSICHAR Buffer[BufferSize];
72 Buffer[0] = 0;
73
74 strerror_r(errno, Buffer, BufferSize);
75
76 return FString::Printf(TEXT("%s: (%d)"), StringCast<TCHAR>(Buffer).Get(), errno);
77}
78
79#endif // PLATFORM_HAS_BSD_SOCKETS
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
struct timeval TIMEVAL
Definition SocketSubsystemBSDPrivate.h:49
sockaddr_in SOCKADDR_IN
Definition SocketSubsystemBSDPrivate.h:48
int32 SOCKET
Definition SocketSubsystemBSDPrivate.h:47
int32 closesocket(SOCKET Socket)
Definition SocketSubsystemBSDPrivate.h:51
socklen_t SOCKLEN
Definition SocketSubsystemBSDPrivate.h:46
uint32_t uint32
Definition binka_ue_file_header.h:6
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426