27 : AllowBroadcast(
false)
33 , MulticastLoopback(
false)
35 , ReceiveBufferSize(0)
108 BoundEndpoint = Endpoint;
154 JoinedGroups.
Add({ GroupAddress, InterfaceAddress });
166 AllowBroadcast =
true;
181 MulticastLoopback =
true;
195 MulticastTtl = TimeToLive;
209 MulticastInterface = InterfaceAddress;
227 ReceiveBufferSize = SizeInBytes;
244 SendBufferSize = SizeInBytes;
271 if (SocketSubsystem ==
nullptr)
273 GLog->Log(
TEXT(
"FUdpSocketBuilder: Failed to load socket subsystem"));
281 if (Socket ==
nullptr)
283 GLog->Logf(
TEXT(
"FUdpSocketBuilder: Failed to create socket %s"), *Description);
289 if (!Socket->SetNonBlocking(!Blocking) ||
290 !Socket->SetReuseAddr(Reusable) ||
291 !Socket->SetBroadcast(AllowBroadcast) ||
292 !Socket->SetRecvErr())
296 GLog->Logf(
TEXT(
"FUdpSocketBuilder: Failed to configure %s (blocking: %i, reusable: %i, broadcast: %i). Error code %d."),
305 if (Bound && !Socket->Bind(*RemoteAddr))
309 GLog->Logf(
TEXT(
"FUdpSocketBuilder: Failed to bind %s to %s. Error code %d."),
318 if (!Socket->SetMulticastLoopback(MulticastLoopback) || !Socket->SetMulticastTtl(MulticastTtl))
322 GLog->Logf(
TEXT(
"FUdpSocketBuilder: Failed to configure multicast for %s (loopback: %i, ttl: %i). Error code %d."),
335 for (
const auto&
Group : JoinedGroups)
353 GLog->Logf(
TEXT(
"FUdpSocketBuilder: Failed to subscribe %s to multicast group %s on interface %s. Error code %d."),
364 if (!Socket->SetMulticastInterface(*
FIPv4Endpoint(MulticastInterface, 0).ToInternetAddr()))
368 GLog->Logf(
TEXT(
"FUdpSocketBuilder: Failed to set multicast outgoing interface for %s to %s. Error code %d."),
380 if (ReceiveBufferSize > 0)
382 if (!Socket->SetReceiveBufferSize(ReceiveBufferSize,
OutNewSize))
386 GLog->Logf(
TEXT(
"FUdpSocketBuilder: Warning - could not set receive buffer size to %d for %s. Error code %d."),
391 if (SendBufferSize > 0)
393 if (!Socket->SetSendBufferSize(SendBufferSize,
OutNewSize))
397 GLog->Logf(
TEXT(
"FUdpSocketBuilder: Warning - could not set send buffer size to %d for %s. Error code %d."),
427 struct FMulticastGroup
435 bool MulticastLoopback;
441 int32 ReceiveBufferSize;
447 int32 SendBufferSize;
#define GLog
Definition CoreGlobals.h:95
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ESocketErrors
Definition SocketErrors.h:9
#define PLATFORM_SOCKETSUBSYSTEM
Definition SocketSubsystem.h:44
virtual void SetBroadcastAddress()=0
Definition UdpSocketBuilder.h:18
FUdpSocketBuilder & AsBlocking()
Definition UdpSocketBuilder.h:48
FUdpSocketBuilder & AsReusable()
Definition UdpSocketBuilder.h:74
FUdpSocketBuilder & JoinedToGroup(const FIPv4Address &GroupAddress, const FIPv4Address &InterfaceAddress)
Definition UdpSocketBuilder.h:152
FSocket * Build() const
Definition UdpSocketBuilder.h:266
FUdpSocketBuilder & AsNonBlocking()
Definition UdpSocketBuilder.h:61
FUdpSocketBuilder & WithSendBufferSize(int32 SizeInBytes)
Definition UdpSocketBuilder.h:242
FUdpSocketBuilder & WithMulticastInterface(const FIPv4Address &InterfaceAddress)
Definition UdpSocketBuilder.h:207
FUdpSocketBuilder & WithMulticastLoopback()
Definition UdpSocketBuilder.h:179
FUdpSocketBuilder & WithReceiveBufferSize(int32 SizeInBytes)
Definition UdpSocketBuilder.h:225
FUdpSocketBuilder & BoundToEndpoint(const FIPv4Endpoint &Endpoint)
Definition UdpSocketBuilder.h:106
FUdpSocketBuilder & JoinedToGroup(const FIPv4Address &GroupAddress)
Definition UdpSocketBuilder.h:139
FUdpSocketBuilder & BoundToPort(uint16 Port)
Definition UdpSocketBuilder.h:124
FUdpSocketBuilder & WithBroadcast()
Definition UdpSocketBuilder.h:164
FUdpSocketBuilder & WithMulticastTtl(uint8 TimeToLive)
Definition UdpSocketBuilder.h:193
FUdpSocketBuilder(const FString &InDescription)
Definition UdpSocketBuilder.h:26
FUdpSocketBuilder & BoundToAddress(const FIPv4Address &Address)
Definition UdpSocketBuilder.h:91
Definition SocketSubsystem.h:58
static SOCKETS_API ISocketSubsystem * Get(const FName &SubsystemName=NAME_None)
Definition SocketSubsystem.cpp:224
virtual TSharedRef< FInternetAddr > CreateInternetAddr(uint32 Address, uint32 Port=0)
Definition SocketSubsystem.h:317
virtual FSocket * CreateSocket(const FName &SocketType, const FString &SocketDescription, bool bForceUDP=false)
Definition SocketSubsystem.h:98
virtual ESocketErrors GetLastErrorCode()=0
virtual void DestroySocket(FSocket *Socket)=0
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition SharedPointer.h:692
Definition SharedPointer.h:153
const FLazyName IPv4(TEXT("IPv4"))
Definition SocketTypes.h:27
@ false
Definition radaudio_common.h:23
Definition IPv4Address.h:16
NETWORKING_API FString ToString() const
Definition IPv4Address.cpp:17
static NETWORKING_API const FIPv4Address Any
Definition IPv4Address.h:299
Definition IPv4Endpoint.h:27
TSharedRef< FInternetAddr > ToInternetAddr() const
Definition IPv4Endpoint.h:112
uint16 Port
Definition IPv4Endpoint.h:32
FIPv4Address Address
Definition IPv4Endpoint.h:29
NETWORKING_API FString ToString() const
Definition IPv4Endpoint.cpp:17