增加多屏显示,视频播放

This commit is contained in:
liuyunhui
2025-09-19 14:40:23 +08:00
parent fded7b9a51
commit 9076a5ea41
112 changed files with 24986 additions and 21 deletions
@@ -0,0 +1,106 @@
// Copyright 2017-2019 David Romanski (Socke). All Rights Reserved.
#pragma once
#include "SocketClient.h"
#include "SocketClientTCPReceiveDataThread.h"
#include "SocketClientTCPSendDataThead.h"
#include "SocketClientTCPFileHandlerThread.h"
#include "SocketClientTCP.generated.h"
class USocketServerBPLibrary;
UCLASS(Blueprintable, BlueprintType)
class SOCKETCLIENT_API USocketClientTCPClient : public UObject
{
GENERATED_UCLASS_BODY()
public:
//Delegates
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FsocketClientTCPConnectionEventDelegate, bool, success, FString, message, FString, clientConnectionID);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FreceiveTCPMessageEventDelegate, FString, message, const TArray<uint8>&, byteArray, FString, clientConnectionID);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_SixParams(FtransferFileOverTCPProgressEventDelegate, FString, clientConnectionID, FString, filePath, float, percent, float, mbit, int64, bytesTransferred, int64, fileSize);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FfileTransferOverTCPInfoEventDelegate, FString, message, FString, clientConnectionID, FString, filePath, bool, success);
UFUNCTION()
void socketClientTCPConnectionEventDelegate(const bool success, const FString message, const FString clientConnectionID);
UPROPERTY(BlueprintAssignable, Category = "SocketClient|TCP|Events|ConnectionInfo")
FsocketClientTCPConnectionEventDelegate onsocketClientTCPConnectionEventDelegate;
UFUNCTION()
void receiveTCPMessageEventDelegate(const FString message, const TArray<uint8>& byteArray, const FString clientConnectionID);
UPROPERTY(BlueprintAssignable, Category = "SocketClient|TCP|Events|ReceiveMessage")
FreceiveTCPMessageEventDelegate onreceiveTCPMessageEventDelegate;
UFUNCTION()
void transferFileOverTCPProgressEventDelegate(const FString clientConnectionID, const FString filePath, const float percent, const float mbit, const int64 bytesTransferred, const int64 fileSize);
UPROPERTY(BlueprintAssignable, Category = "SocketClient|TCP|Events|File|transferFileOverTCPProgress")
FtransferFileOverTCPProgressEventDelegate ontransferFileOverTCPProgressEventDelegate;
UFUNCTION()
void fileTransferOverTCPInfoEventDelegate(const FString message, const FString clientConnectionID, const FString filePath, const bool success);
UPROPERTY(BlueprintAssignable, Category = "SocketClient|TCP|Events|File|FileTransferOverTCPInfo")
FfileTransferOverTCPInfoEventDelegate onfileTransferOverTCPInfoEventDelegate;
UFUNCTION()
void connectionEvent(bool success, FString message, FString clientConnectionID);
void connect(USocketClientBPLibrary* mainLib, FString domainOrIP, ESocketClientIPType ipType, int32 port, EReceiveFilterClient receiveFilter,
ESocketClientTCPSeparator messageWrapping, FString connectionID, UTCPConnectAsyncNode* tcpConnectAsyncNode, bool noPacketDelay = false, bool noPacketBlocking = false);
void sendMessage(FString message, TArray<uint8> byteArray);
void sendFile(USocketClientBPLibrary* mainLib, FString connectionID, FString domainOrIP, ESocketClientIPType ipType, int32 port, EFileFunctionsSocketClientDirectoryType directoryType, FString filePath, FString token, FString Aes256bitKey);
void requestFile(USocketClientBPLibrary* mainLib, FString connectionID, FString domainOrIP, ESocketClientIPType ipType, int32 port, EFileFunctionsSocketClientDirectoryType directoryType, FString filePath,bool resume, FString token, FString Aes256bitKey);
void closeConnection();
bool isRun();
void setRun(bool runP);
FString getConnectionID();
FString getAesKey();
FString getFileToken();
FString getFilePath();
void setSocket(FSocket* socket);
FSocket* getSocket();
USocketClientBPLibrary* getMainLib();
void createSendThread();
//void createFileSendThread(int64 startPosition);
FString encryptMessage(FString message);
FString decryptMessage(FString message);
void readDataLength(TArray<uint8>& byteDataArray, int32& byteLenght);
bool isSendFile();
bool isReceiveFile();
bool hasResume();
bool isConnected();
void deleteFile(FString filePathP);
void getMD5FromFileAbsolutePath(FString filePath, bool& success, FString& MD5);
int64 fileSize(FString filePath);
FString int64ToString(int64 num);
void getTcpSeparator(FString& stringSeparator, uint8& byteSeparator, ESocketClientTCPSeparator& messageWrapping);
UTCPConnectAsyncNode* tcpConnectAsyncNode = nullptr;
private:
bool run = false;
bool connected = false;
bool resume = false;
int32 sendOrReceive = -1; //0 == send, 1 == receive;
FString connectionID = FString();
FString aesKey = FString();
FString fileToken = FString();
FString filePath = FString();
FSocket* socket = nullptr;
FSocketClientTCPReceiveDataThread* tcpReceiveDataThread = nullptr;
FSocketClientTCPSendDataThead* tcpSendThread = nullptr;
FSocketClientTCPFileHandlerThread* tcpFileConnectionThread = nullptr;
//FSocketClientTCPSendFileThread* fileSendThread = nullptr;
USocketClientBPLibrary* mainLib = nullptr;
ESocketClientTCPSeparator messageWrapping;
FString tcpStringSeparator = "(~{";
uint8 tcpByteSeparator = 0x00;
};