UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SocketsBSD.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "HAL/PlatformTime.h"
8
9#include <atomic>
10
11class FInternetAddr;
12
13#if PLATFORM_HAS_BSD_SOCKETS || PLATFORM_HAS_BSD_IPV6_SOCKETS
14
15#include "Sockets.h"
16
17
21enum class ESocketBSDParam : uint8
22{
23 CanRead,
25 HasError,
26};
27
28
32enum class ESocketBSDReturn : uint8
33{
34 Yes,
35 No,
37};
38
39
43class FSocketBSD
44 : public FSocket
45{
46public:
47
59 , LastActivityTime(0.0)
60 , SocketSubsystem(InSubsystem)
61 { }
62
68 virtual ~FSocketBSD()
69 {
70 FSocketBSD::Close();
71 }
72
73public:
74
81 {
82 return Socket;
83 }
84
85public:
86
87 // FSocket overrides
88
89 virtual bool Shutdown(ESocketShutdownMode Mode) override;
90 virtual bool Close() override;
91 virtual bool Bind(const FInternetAddr& Addr) override;
92 virtual bool Connect(const FInternetAddr& Addr) override;
93 virtual bool Listen(int32 MaxBacklog) override;
94 virtual bool WaitForPendingConnection(bool& bHasPendingConnection, const FTimespan& WaitTime) override;
95 virtual bool HasPendingData(uint32& PendingDataSize) override;
96 virtual class FSocket* Accept(const FString& SocketDescription) override;
97 virtual class FSocket* Accept(FInternetAddr& OutAddr, const FString& SocketDescription) override;
98 virtual bool SendTo(const uint8* Data, int32 Count, int32& BytesSent, const FInternetAddr& Destination) override;
99 virtual bool Send(const uint8* Data, int32 Count, int32& BytesSent) override;
100 virtual bool RecvFrom(uint8* Data, int32 BufferSize, int32& BytesRead, FInternetAddr& Source, ESocketReceiveFlags::Type Flags = ESocketReceiveFlags::None) override;
101 virtual bool Recv(uint8* Data,int32 BufferSize,int32& BytesRead, ESocketReceiveFlags::Type Flags = ESocketReceiveFlags::None) override;
102 virtual bool Wait(ESocketWaitConditions::Type Condition, FTimespan WaitTime) override;
104 virtual void GetAddress(FInternetAddr& OutAddr) override;
105 virtual bool GetPeerAddress(FInternetAddr& OutAddr) override;
106 virtual bool SetNonBlocking(bool bIsNonBlocking = true) override;
107 virtual bool SetNoDelay(bool bIsNoDelay = true) override;
108 virtual bool SetBroadcast(bool bAllowBroadcast = true) override;
109 virtual bool JoinMulticastGroup(const FInternetAddr& GroupAddress) override;
110 virtual bool JoinMulticastGroup(const FInternetAddr& GroupAddress, const FInternetAddr& InterfaceAddress) override;
111 virtual bool LeaveMulticastGroup(const FInternetAddr& GroupAddress) override;
112 virtual bool LeaveMulticastGroup(const FInternetAddr& GroupAddress, const FInternetAddr& InterfaceAddress) override;
113 virtual bool SetMulticastLoopback(bool bLoopback) override;
114 virtual bool SetMulticastTtl(uint8 TimeToLive) override;
115 virtual bool SetMulticastInterface(const FInternetAddr& InterfaceAddress) override;
116 virtual bool SetReuseAddr(bool bAllowReuse = true) override;
117 virtual bool SetLinger(bool bShouldLinger = true, int32 Timeout = 0) override;
118 virtual bool SetRecvErr(bool bUseErrorQueue = true) override;
119 virtual bool SetSendBufferSize(int32 Size,int32& NewSize) override;
120 virtual bool SetReceiveBufferSize(int32 Size,int32& NewSize) override;
121 virtual int32 GetPortNo() override;
122 virtual bool SetIpPktInfo(bool bEnable) override;
123 virtual bool RecvFromWithPktInfo(uint8* Data, int32 BufferSize, int32& BytesRead, FInternetAddr& Source, FInternetAddr& Destination, ESocketReceiveFlags::Type Flags = ESocketReceiveFlags::None) override;
124 [[nodiscard]] virtual UPTRINT ReleaseNativeSocket() override;
125
126 bool SetIPv6Only(bool bIPv6Only);
127
128protected:
129
132
135 {
137 }
138
141
143 std::atomic<double> LastActivityTime { 0.0 };
144
146 int SendFlags = 0;
147
149 ISocketSubsystem* SocketSubsystem;
150};
151
152
153#endif //PLATFORM_HAS_BSD_SOCKETS
#define FORCEINLINE
Definition AndroidPlatform.h:140
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
int32 SOCKET
Definition SocketSubsystemBSDPrivate.h:47
ESocketConnectionState
Definition SocketTypes.h:44
ESocketType
Definition SocketTypes.h:33
ESocketShutdownMode
Definition SocketTypes.h:107
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IPAddress.h:22
Definition NameTypes.h:617
Definition Sockets.h:19
virtual SOCKETS_API bool RecvFromWithPktInfo(uint8 *Data, int32 BufferSize, int32 &BytesRead, FInternetAddr &Source, FInternetAddr &Destination, ESocketReceiveFlags::Type Flags=ESocketReceiveFlags::None)
Definition Sockets.cpp:97
virtual SOCKETS_API bool SendTo(const uint8 *Data, int32 Count, int32 &BytesSent, const FInternetAddr &Destination)
Definition Sockets.cpp:47
virtual bool GetPeerAddress(FInternetAddr &OutAddr)=0
virtual bool WaitForPendingConnection(bool &bHasPendingConnection, const FTimespan &WaitTime)=0
virtual bool SetMulticastInterface(const FInternetAddr &InterfaceAddress)=0
virtual bool SetReuseAddr(bool bAllowReuse=true)=0
virtual bool SetMulticastLoopback(bool bLoopback)=0
virtual bool HasPendingData(uint32 &PendingDataSize)=0
virtual bool SetReceiveBufferSize(int32 Size, int32 &NewSize)=0
virtual bool JoinMulticastGroup(const FInternetAddr &GroupAddress)=0
virtual bool SetRecvErr(bool bUseErrorQueue=true)=0
virtual bool SetNoDelay(bool bIsNoDelay=true)=0
virtual bool Wait(ESocketWaitConditions::Type Condition, FTimespan WaitTime)=0
virtual SOCKETS_API bool Recv(uint8 *Data, int32 BufferSize, int32 &BytesRead, ESocketReceiveFlags::Type Flags=ESocketReceiveFlags::None)
Definition Sockets.cpp:73
virtual bool SetLinger(bool bShouldLinger=true, int32 Timeout=0)=0
virtual bool LeaveMulticastGroup(const FInternetAddr &GroupAddress)=0
virtual bool SetNonBlocking(bool bIsNonBlocking=true)=0
virtual ESocketConnectionState GetConnectionState()=0
virtual SOCKETS_API bool RecvFrom(uint8 *Data, int32 BufferSize, int32 &BytesRead, FInternetAddr &Source, ESocketReceiveFlags::Type Flags=ESocketReceiveFlags::None)
Definition Sockets.cpp:63
virtual UPTRINT ReleaseNativeSocket()
Definition Sockets.h:101
virtual bool Close()=0
virtual bool Listen(int32 MaxBacklog)=0
virtual bool SetSendBufferSize(int32 Size, int32 &NewSize)=0
virtual SOCKETS_API bool SetIpPktInfo(bool bEnable)
Definition Sockets.cpp:92
virtual void GetAddress(FInternetAddr &OutAddr)=0
virtual bool Bind(const FInternetAddr &Addr)=0
virtual int32 GetPortNo()=0
virtual bool SetBroadcast(bool bAllowBroadcast=true)=0
virtual bool SetMulticastTtl(uint8 TimeToLive)=0
Definition SocketSubsystem.h:58
@ Socket
Definition EngineTypes.h:3849
Type
Definition SocketTypes.h:58
@ None
Definition SocketTypes.h:63
Type
Definition SocketTypes.h:85
static double Seconds()
Definition AndroidPlatformTime.h:20
Definition Timespan.h:76
static FTimespan Zero()
Definition Timespan.h:747