UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Sockets.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreMinimal.h"
7#include "CoreTypes.h"
8#include "Misc/Timespan.h"
9#include "SocketTypes.h"
10#include "UObject/NameTypes.h"
11#include "UObject/UnrealNames.h"
12
13class FInternetAddr;
14
18class FSocket : public TSharedFromThis<FSocket, ESPMode::ThreadSafe>
19{
20protected:
21
24
27
30
31public:
32
35
42 UE_DEPRECATED(4.22, "Please migrate to the constructor that specifies protocol stack")
48
49 UE_DEPRECATED(4.23, "Please migrate to the constructor that takes an FName for the protocol stack")
67
76
79
86 virtual bool Shutdown(ESocketShutdownMode Mode) = 0;
87
93 virtual bool Close() = 0;
94
101 [[nodiscard]] virtual UPTRINT ReleaseNativeSocket() { return 0; }
102
109 virtual bool Bind(const FInternetAddr& Addr) = 0;
110
117 virtual bool Connect(const FInternetAddr& Addr) = 0;
118
125 virtual bool Listen(int32 MaxBacklog) = 0;
126
135 virtual bool WaitForPendingConnection(bool& bHasPendingConnection, const FTimespan& WaitTime) = 0;
136
147
155
162 virtual class FSocket* Accept(const FString& InSocketDescription) = 0;
163
171 virtual class FSocket* Accept(FInternetAddr& OutAddr, const FString& InSocketDescription) = 0;
172
181 SOCKETS_API virtual bool SendTo(const uint8* Data, int32 Count, int32& BytesSent, const FInternetAddr& Destination);
182
190 SOCKETS_API virtual bool Send(const uint8* Data, int32 Count, int32& BytesSent);
191
207
222
233
241 virtual bool Wait(ESocketWaitConditions::Type Condition, FTimespan WaitTime) = 0;
242
249
255 virtual void GetAddress(FInternetAddr& OutAddr) = 0;
256
264
271 virtual bool SetNonBlocking(bool bIsNonBlocking = true) = 0;
272
279 virtual bool SetBroadcast(bool bAllowBroadcast = true) = 0;
280
287 virtual bool SetNoDelay(bool bIsNoDelay = true) = 0;
288
298 virtual bool JoinMulticastGroup(const FInternetAddr& GroupAddress) = 0;
299
310 virtual bool JoinMulticastGroup(const FInternetAddr& GroupAddress, const FInternetAddr& InterfaceAddress) = 0;
311
319 virtual bool LeaveMulticastGroup(const FInternetAddr& GroupAddress) = 0;
320
329 virtual bool LeaveMulticastGroup(const FInternetAddr& GroupAddress, const FInternetAddr& InterfaceAddress) = 0;
330
342 virtual bool SetMulticastLoopback(bool bLoopback) = 0;
343
355 virtual bool SetMulticastTtl(uint8 TimeToLive) = 0;
356
366 virtual bool SetMulticastInterface(const FInternetAddr& InterfaceAddress) = 0;
367
374 virtual bool SetReuseAddr(bool bAllowReuse = true) = 0;
375
383 virtual bool SetLinger(bool bShouldLinger = true, int32 Timeout = 0) = 0;
384
391 virtual bool SetRecvErr(bool bUseErrorQueue = true) = 0;
392
400 virtual bool SetSendBufferSize(int32 Size, int32& NewSize) = 0;
401
409 virtual bool SetReceiveBufferSize(int32 Size, int32& NewSize) = 0;
410
418
425 virtual int32 GetPortNo() = 0;
426
433 SOCKETS_API virtual bool SetIpPktInfo(bool bEnable);
434
451
459 {
460 return SocketType;
461 }
462
469 inline FString GetDescription() const
470 {
471 return SocketDescription;
472 }
473
480 inline FName GetProtocol() const
481 {
482 return SocketProtocol;
483 }
484};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
ESocketProtocolFamily
Definition SocketTypes.h:16
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 class FSocket * Accept(const FString &InSocketDescription)=0
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 SOCKETS_API bool SetRetrieveTimestamp(bool bRetrieveTimestamp=true)
Definition Sockets.cpp:87
virtual bool SetMulticastInterface(const FInternetAddr &InterfaceAddress)=0
virtual bool Connect(const FInternetAddr &Addr)=0
virtual bool SetReuseAddr(bool bAllowReuse=true)=0
virtual SOCKETS_API bool RecvMulti(FRecvMulti &MultiData, ESocketReceiveFlags::Type Flags=ESocketReceiveFlags::None)
Definition Sockets.cpp:82
virtual bool SetMulticastLoopback(bool bLoopback)=0
virtual bool HasPendingData(uint32 &PendingDataSize)=0
FName GetProtocol() const
Definition Sockets.h:480
virtual bool SetReceiveBufferSize(int32 Size, int32 &NewSize)=0
FName SocketProtocol
Definition Sockets.h:29
virtual bool JoinMulticastGroup(const FInternetAddr &GroupAddress)=0
virtual bool SetRecvErr(bool bUseErrorQueue=true)=0
virtual bool SetNoDelay(bool bIsNoDelay=true)=0
virtual bool Shutdown(ESocketShutdownMode Mode)=0
virtual bool Wait(ESocketWaitConditions::Type Condition, FTimespan WaitTime)=0
virtual bool JoinMulticastGroup(const FInternetAddr &GroupAddress, const FInternetAddr &InterfaceAddress)=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
FString SocketDescription
Definition Sockets.h:26
virtual bool SetNonBlocking(bool bIsNonBlocking=true)=0
SOCKETS_API FSocket()
Definition Sockets.cpp:32
FString GetDescription() const
Definition Sockets.h:469
bool HasPendingConnection(bool &bHasPendingConnection)
Definition Sockets.h:143
virtual bool LeaveMulticastGroup(const FInternetAddr &GroupAddress, const FInternetAddr &InterfaceAddress)=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 SOCKETS_API ~FSocket()
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 class FSocket * Accept(FInternetAddr &OutAddr, const FString &InSocketDescription)=0
virtual int32 GetPortNo()=0
virtual bool SetBroadcast(bool bAllowBroadcast=true)=0
ESocketType GetSocketType() const
Definition Sockets.h:458
virtual bool SetMulticastTtl(uint8 TimeToLive)=0
const ESocketType SocketType
Definition Sockets.h:23
Definition SharedPointer.h:1640
Type
Definition SocketTypes.h:58
@ None
Definition SocketTypes.h:63
Type
Definition SocketTypes.h:85
const FLazyName IPv6(TEXT("IPv6"))
Definition SocketTypes.h:28
const FLazyName IPv4(TEXT("IPv4"))
Definition SocketTypes.h:27
Definition SocketTypes.h:166
Definition Timespan.h:76
static FTimespan Zero()
Definition Timespan.h:747