当前位置: 首页 > wzjs >正文

网站规划与设计h5seo技术分享

网站规划与设计h5,seo技术分享,企业建立自己的网站,柳市建设网站1关于如何打包安卓项目这里就不赘述了 2代码举例。最重要的就是这两句 #if PLATFORM_ANDROID #endif#if PLATFORM_WINDOWS #endif全部代码如下: Button_Sheng.h: // Fill out your copyright notice in the Description page of Project Settings.#pragma once#in…

在这里插入图片描述

1关于如何打包安卓项目这里就不赘述了
2代码举例。最重要的就是这两句`

#if PLATFORM_ANDROID
#endif#if PLATFORM_WINDOWS
#endif

全部代码如下:
Button_Sheng.h:

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"#include "Components/Button.h"
#include "Components/TextBlock.h"#include "Button_Sheng.generated.h"
#if PLATFORM_ANDROID
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <unistd.h>  
#include <arpa/inet.h>  
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <pthread.h>  
#endif/*** */
UCLASS()
class CCEC_CLIENT_0113_API UButton_Sheng : public UUserWidget
{GENERATED_BODY()public:// 声明按钮和文本块UPROPERTY(meta = (BindWidget))UButton* MyButton;UPROPERTY(meta = (BindWidget))UTextBlock* MyTextBlock;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Custom")int Code;// 移植过来的函数声明UFUNCTION(BlueprintCallable, Category = "aaaaaa")void Sheng(FString Message);
protected:// 构造函数virtual void NativeConstruct() override;public:// 动态创建 Widget 的函数UFUNCTION(BlueprintCallable, Category = "Widget")void CreateDynamicWidget(int32 WidgetID);// 动态创建 Widget 的函数(基于 FString)UFUNCTION(BlueprintCallable, Category = "Widget")void CreateDynamicWidgetByName(const FString& WidgetName);protected:// 父容器,用于存放动态创建的 Widget//UPROPERTY(meta = (BindWidget))//class UPanelWidget* ParentContainer;
};

Button_Sheng.cpp:

#include "Button_Sheng.h"
#include "Components/WidgetComponent.h"
#include <iostream>  #include "Blueprint/WidgetTree.h"
#include "Components/PanelWidget.h"
#include "UObject/ConstructorHelpers.h"#if PLATFORM_ANDROID
#define BROADCAST_PORT 8888  
#define BROADCAST_PORT2 8889  
#define BROADCAST_PORT3 8887 
#define BROADCAST_MESSAGE1 "1" 
#define BROADCAST_MESSAGE2 "2" 
#define BROADCAST_MESSAGE3 "3" 
#define BROADCAST_MESSAGE42 "42"void* send_broadcast13(void* arg) {int sockfd;struct sockaddr_in broadcast_addr;const char* message = static_cast<const char*>(arg);//char* message = (char*)arg;ssize_t bytes_sent;// 创建UDP套接字  if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("socket creation failed");pthread_exit(NULL);}// 允许广播  int broadcast_enable = 1;if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast_enable, sizeof(broadcast_enable)) < 0) {perror("setsockopt(SO_BROADCAST) failed");close(sockfd);pthread_exit(NULL);}// 设置广播地址  memset(&broadcast_addr, 0, sizeof(broadcast_addr));broadcast_addr.sin_family = AF_INET;broadcast_addr.sin_addr.s_addr = inet_addr("255.255.255.255"); // 局域网广播地址  broadcast_addr.sin_port = htons(BROADCAST_PORT);// 发送广播消息  bytes_sent = sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&broadcast_addr, sizeof(broadcast_addr));if (bytes_sent < 0) {perror("sendto failed");}else {printf("Broadcast message sent: %s\n", message);}// 关闭套接字  close(sockfd);pthread_exit(NULL);
}
void* send_broadcast14(void* arg) {int sockfd;struct sockaddr_in broadcast_addr;char* message = (char*)arg;ssize_t bytes_sent;// 创建UDP套接字  if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("socket creation failed");pthread_exit(NULL);}// 允许广播  int broadcast_enable = 1;if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast_enable, sizeof(broadcast_enable)) < 0) {perror("setsockopt(SO_BROADCAST) failed");close(sockfd);pthread_exit(NULL);}// 设置广播地址  memset(&broadcast_addr, 0, sizeof(broadcast_addr));broadcast_addr.sin_family = AF_INET;broadcast_addr.sin_addr.s_addr = inet_addr("255.255.255.255"); // 局域网广播地址  broadcast_addr.sin_port = htons(BROADCAST_PORT2);// 发送广播消息  bytes_sent = sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&broadcast_addr, sizeof(broadcast_addr));if (bytes_sent < 0) {perror("sendto failed");}else {printf("Broadcast message sent: %s\n", message);}// 关闭套接字  close(sockfd);pthread_exit(NULL);
}void* send_broadcast15(void* arg) {int sockfd;struct sockaddr_in broadcast_addr;char* message = (char*)arg;ssize_t bytes_sent;const char* message1 = "1";const char* message2 = "2";// 创建UDP套接字  if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("socket creation failed");pthread_exit(NULL);}// 允许广播  int broadcast_enable = 1;if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast_enable, sizeof(broadcast_enable)) < 0) {perror("setsockopt(SO_BROADCAST) failed");close(sockfd);pthread_exit(NULL);}// 设置广播地址  memset(&broadcast_addr, 0, sizeof(broadcast_addr));broadcast_addr.sin_family = AF_INET;broadcast_addr.sin_addr.s_addr = inet_addr("255.255.255.255"); // 局域网广播地址  broadcast_addr.sin_port = htons(BROADCAST_PORT2);sleep(6);// 发送广播消息  bytes_sent = sendto(sockfd, message2, strlen(message2), 0, (struct sockaddr*)&broadcast_addr, sizeof(broadcast_addr));sleep(6);// 发送广播消息  bytes_sent = sendto(sockfd, message1, strlen(message1), 0, (struct sockaddr*)&broadcast_addr, sizeof(broadcast_addr));// 关闭套接字  close(sockfd);pthread_exit(NULL);
}
void* send_broadcast16(void* arg) {int sockfd;struct sockaddr_in broadcast_addr;char* message = (char*)arg;ssize_t bytes_sent;// 创建UDP套接字  if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("socket creation failed");pthread_exit(NULL);}// 允许广播  int broadcast_enable = 1;if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast_enable, sizeof(broadcast_enable)) < 0) {perror("setsockopt(SO_BROADCAST) failed");close(sockfd);pthread_exit(NULL);}// 设置广播地址  memset(&broadcast_addr, 0, sizeof(broadcast_addr));broadcast_addr.sin_family = AF_INET;broadcast_addr.sin_addr.s_addr = inet_addr("255.255.255.255"); // 局域网广播地址  broadcast_addr.sin_port = htons(BROADCAST_PORT3);//就在这改!!!!!!!!!!!!// 发送广播消息  bytes_sent = sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&broadcast_addr, sizeof(broadcast_addr));if (bytes_sent < 0) {perror("sendto failed");}else {printf("Broadcast message sent: %s\n", message);}// 关闭套接字  close(sockfd);pthread_exit(NULL);
}
#endif#if PLATFORM_ANDROID
void UButton_Sheng::Sheng(FString Message)
{// 为 Message 分配足够的空间,包括 null 终止符int32 Length = Message.Len() + 1;char* MessageCStr = new char[Length];FMemory::Memcpy(MessageCStr, TCHAR_TO_UTF8(*Message), Length);pthread_t thread1, thread2, thread3;// 创建线程来发送第一个广播消息  if (pthread_create(&thread1, NULL, send_broadcast13, (void*)MessageCStr) != 0) {//调用8888的函数,传入1perror("pthread_create for first message failed");exit(EXIT_FAILURE);}// 注意:为每个 pthread_create 调用复制新的字符串或使用其他同步机制来共享同一个字符串// 这里为了简化,我们为每个线程都复制了一个新字符串(这不是最高效的方法,但避免了线程安全问题)char* MessageCStr2 = new char[Length];FMemory::Memcpy(MessageCStr2, TCHAR_TO_UTF8(*Message), Length);// 创建线程来发送第二个广播消息  if (pthread_create(&thread2, NULL, send_broadcast14, (void*)MessageCStr2) != 0) {//调用8889的第一个函数,传入1perror("pthread_create for second message failed");// 注意:这里应该加入代码来取消或等待第一个线程,以避免资源泄露  // 但为了简单起见,我们直接退出程序(在实际应用中,这是不推荐的)  exit(EXIT_FAILURE);}char* MessageCStr3 = new char[Length];FMemory::Memcpy(MessageCStr3, TCHAR_TO_UTF8(*Message), Length);// 创建线程来发送第二个广播消息  if (pthread_create(&thread3, NULL, send_broadcast16, (void*)MessageCStr3) != 0) {//调用8889的第一个函数,传入1perror("pthread_create for second message failed");// 注意:这里应该加入代码来取消或等待第一个线程,以避免资源泄露  // 但为了简单起见,我们直接退出程序(在实际应用中,这是不推荐的)  exit(EXIT_FAILURE);}// 等待两个线程完成  if (pthread_join(thread1, NULL) != 0) {perror("pthread_join for first message failed");}if (pthread_join(thread2, NULL) != 0) {perror("pthread_join for second message failed");}if (pthread_join(thread3, NULL) != 0) {perror("pthread_join for first message failed");}// 释放内存delete[] MessageCStr;delete[] MessageCStr2;delete[] MessageCStr3;
}
#endif#if PLATFORM_WINDOWS
void UButton_Sheng::Sheng(FString Message)
{UE_LOG(LogTemp, Error, TEXT(" %s"), *Message);
}
#endifvoid UButton_Sheng::NativeConstruct()
{
}void UButton_Sheng::CreateDynamicWidget(int32 WidgetID)
{// 根据 WidgetID 拼接资源路径FString WidgetPath = FString::Printf(TEXT("/Game/widget/Widget_%d.Widget_%d_C"), WidgetID, WidgetID);// 加载 Widget ClassTSubclassOf<UUserWidget> WidgetClass = LoadClass<UUserWidget>(nullptr, *WidgetPath);if (WidgetClass){// 创建 Widget 实例UUserWidget* DynamicWidget = CreateWidget<UUserWidget>(GetWorld(), WidgetClass);if (DynamicWidget){DynamicWidget->AddToViewport();UE_LOG(LogTemp, Log, TEXT("Widget %d created and added to container!"), WidgetID);}}else{UE_LOG(LogTemp, Error, TEXT("Failed to load Widget Class for ID: %d"), WidgetID);}
}void UButton_Sheng::CreateDynamicWidgetByName(const FString& WidgetName)
{// 根据 WidgetName 拼接资源路径FString WidgetPath = FString::Printf(TEXT("/Game/UI/%s.%s_C"), *WidgetName, *WidgetName);// 加载 Widget ClassTSubclassOf<UUserWidget> WidgetClass = LoadClass<UUserWidget>(nullptr, *WidgetPath);if (WidgetClass){// 创建 Widget 实例UUserWidget* DynamicWidget = CreateWidget<UUserWidget>(GetWorld(), WidgetClass);if (DynamicWidget ){}}else{UE_LOG(LogTemp, Error, TEXT("Failed to load Widget Class for Name: %s"), *WidgetName);}
}
http://www.dtcms.com/wzjs/163059.html

相关文章:

  • 木材模板.网站上海搜索排名优化公司
  • 重庆所有做网站的公司排名百度seo推广
  • 地图网站开发百度广告联盟官网
  • 做移动端电影网站如何给网站做推广
  • 购物网站首页图片我想做网络推广
  • 网站美化工具宁德市医院
  • 怎么做网站导航地图2023广东最新疫情
  • 阿里巴巴网站建设分析推广公司品牌
  • 在线印章制作百度快速排名优化服务
  • 东莞百度推广优化青岛seo公司
  • 各种类型网站建设seo外包公司专家
  • ps做网站素材文件打包怎么学做电商然后自己创业
  • 做赌石网站客服的经验哪些平台可以发广告
  • 湘潭网站建设工作室长沙靠谱seo优化价格
  • 网站跳出率高的原因人工智能培训机构排名
  • 哪些网站是专门做牛仔批发的如何做好企业推广
  • 做复刻手表的网站吸引人的营销标题
  • 方庄网站建设怎么建设自己的网站
  • 做木材加工的企业网站首页网络维护公司
  • adobe做网站的软件站外seo是什么
  • 网页特效代码网站长沙seo优化推广
  • oss可以做视频网站吗常见的微信营销方式有哪些
  • 在盐城做网站的网络公司电话营销策划与运营
  • 美女做那种视频网站有哪些如何做宣传推广效果最好
  • 建设网站用新域名还是老域名seo排名诊断
  • 杭州如何设计公司网站做外贸怎么推广
  • 网页设计制作网站开发建设新手建站基础入门到精通视频教程百度seo提高排名费用
  • 西宁做网站需要多少钱百度指数数据官网
  • 自己怎么做微网站uc推广登录入口
  • 百度 网站地图怎么做写文的免费软件