diff --git a/Source/RedNetwork/Private/RedNetworkServer.cpp b/Source/RedNetwork/Private/RedNetworkServer.cpp index 2bfebcc..7446b97 100644 --- a/Source/RedNetwork/Private/RedNetworkServer.cpp +++ b/Source/RedNetwork/Private/RedNetworkServer.cpp @@ -17,6 +17,27 @@ bool URedNetworkServer::Send(int32 ClientID, const TArray& Data) return Info.KCPUnit->Send(Data.GetData(), Data.Num()) == 0; } +TSharedPtr URedNetworkServer::GetSocketAddr() const +{ + if (!SocketPtr) return nullptr; + + ISocketSubsystem* SocketSubsystem = ISocketSubsystem::Get(); + check(SocketSubsystem); + + TSharedRef Addr = SocketSubsystem->CreateInternetAddr(); + + SocketPtr->GetAddress(*Addr); + + return Addr; +} + +FString URedNetworkServer::GetSocketAddrString() const +{ + TSharedPtr Addr = GetSocketAddr(); + + return Addr ? Addr->ToString(true) : TEXT(""); +} + void URedNetworkServer::UDPSend(int32 ClientID, const uint8* Data, int32 Count) { if (!IsActive() || !Connections.Contains(ClientID)) return; diff --git a/Source/RedNetwork/Public/RedNetworkServer.h b/Source/RedNetwork/Public/RedNetworkServer.h index 641febf..5166273 100644 --- a/Source/RedNetwork/Public/RedNetworkServer.h +++ b/Source/RedNetwork/Public/RedNetworkServer.h @@ -46,6 +46,11 @@ public: UFUNCTION(BlueprintCallable, Category = "Red|Network") bool Send(int32 ClientID, const TArray& Data); + TSharedPtr GetSocketAddr() const; + + UFUNCTION(BlueprintCallable, Category = "Red|Network") + FString GetSocketAddrString() const; + public: UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Red|Network")