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

网站站长seo推广编辑模板wordpress

网站站长seo推广,编辑模板wordpress,安徽省住房城乡建设厅门户网站,网站速度打开慢的原因1 现象描述和原理解读 该问题同时存在于android App和Framework系统中。最终效果是在Android系统中直接使用UDP广播无效,有意思的是有的android系统可以,有的Android 系统不行。然而该部分代码自己在Linux上测试时是有效的,代码不变&#xf…

1 现象描述和原理解读

该问题同时存在于android App和Framework系统中。最终效果是在Android系统中直接使用UDP广播无效,有意思的是有的android系统可以,有的Android 系统不行。然而该部分代码自己在Linux上测试时是有效的,代码不变,只是简单的编译移植过来就变得莫名其妙的不行了,头还真是大的不行。

UDP广播接收端的关键实现程序如下所示:

#include <iostream>
#include <string>
#include <cstring>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>const int UDP_PORT = 19662;int main() {int socket_fd = socket(AF_INET, SOCK_DGRAM, 0);if (socket_fd == -1) {std::cerr << "Failed to create socket" << std::endl;return 1;}struct sockaddr_in local_address{};local_address.sin_family = AF_INET;local_address.sin_addr.s_addr = INADDR_ANY;local_address.sin_port = htons(UDP_PORT);if (bind(socket_fd, (struct sockaddr*)&local_address, sizeof(local_address)) == -1) {std::cerr << "Failed to bind socket" << std::endl;close(socket_fd);return 1;}std::cout << "Listening for UDP broadcast on port " << UDP_PORT << std::endl;char buffer[1024];struct sockaddr_in sender_address{};socklen_t sender_address_length = sizeof(sender_address);while (true) {ssize_t bytes_received = recvfrom(socket_fd, buffer, sizeof(buffer), 0,(struct sockaddr*)&sender_address, &sender_address_length);if (bytes_received == -1) {std::cerr << "Error receiving data" << std::endl;close(socket_fd);return 1;}std::string received_message(buffer, bytes_received);std::cout << "Received message from " << inet_ntoa(sender_address.sin_addr)<< ": " << received_message << std::endl;}close(socket_fd);return 0;
}

UDP广播发送端测试程序如下:

#include <iostream>
#include <string>
#include <cstring>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>const int UDP_PORT = 19662;
const std::string UDP_BROADCAST_ADDRESS = "192.168.1.255";int main() {int socket_fd = socket(AF_INET, SOCK_DGRAM, 0);if (socket_fd == -1) {std::cerr << "Failed to create socket" << std::endl;return 1;}int broadcast_enable = 1;if (setsockopt(socket_fd, SOL_SOCKET, SO_BROADCAST, &broadcast_enable, sizeof(broadcast_enable)) == -1) {std::cerr << "Failed to enable broadcast" << std::endl;close(socket_fd);return 1;}struct sockaddr_in target_address{};target_address.sin_family = AF_INET;target_address.sin_port = htons(UDP_PORT);if (inet_pton(AF_INET, UDP_BROADCAST_ADDRESS.c_str(), &target_address.sin_addr) <= 0) {std::cerr << "Invalid address" << std::endl;close(socket_fd);return 1;}std::string message = "Hello UDP Broadcast!";ssize_t bytes_sent = sendto(socket_fd, message.c_str(), message.size(), 0,(struct sockaddr*)&target_address, sizeof(target_address));if (bytes_sent == -1) {std::cerr << "Failed to send data" << std::endl;close(socket_fd);return 1;}std::cout << "Sent broadcast message: " << message << std::endl;close(socket_fd);return 0;
}

在移植到android的过程中实际上是使用android走JNI调用C++的方式来使用,这里就不详述了。

最后分析,发现,果然是android的问题。因为在 移动端 Android 系统中,使用 UDP 广播可能会引发一些耗电的问题,因为 UDP 广播需要 Wi-Fi 连接保持在活动状态,以便能够发送和接收数据包。为了避免在应用程序使用 UDP 广播时造成不必要的电池消耗,开发者可以考虑使用 Wi-Fi 锁来控制 Wi-Fi 连接的状态。

Wi-Fi 锁是 Android 提供的一种机制,允许应用程序在需要时保持 Wi-Fi 连接处于活动状态,而不会由于系统的网络管理策略而被关闭或断开连接。使用 Wi-Fi 锁,应用程序可以确保在需要进行网络通信时,Wi-Fi 连接一直保持活跃,从而避免了频繁的连接和断开过程,这有助于降低耗电量。

修改方案(Android All)

Wi-Fi锁的获取和释放源码如下所示:

import android.content.Context;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;public class WifiLockManager {private WifiLock wifiLock;private WifiManager wifiManager;public WifiLockManager(Context context) {wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);wifiLock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL, "MyWifiLock");}//获取锁public void acquireWifiLock() {wifiLock.acquire();}//释放锁public void releaseWifiLock() {if (wifiLock.isHeld()) {wifiLock.release();}}
}

这样在UDP广播时就不会出现连不上的情况了。实际上Wi-Fi 锁机制从 Android 1.0 版本就存在,但是随着不同版本的 Android 系统的发布和演变,该机制可能会有一些变化和改进。

具体的行为和影响因 Android 版本和设备厂商而异。在早期的 Android 版本中,Wi-Fi 锁主要用于控制 Wi-Fi 连接的休眠策略,以防止在连接处于活动状态时进入省电模式。然而,随着 Android 版本的更新,系统对网络管理策略进行了多次改进,旨在更好地平衡性能和电池寿命,因此 Wi-Fi 锁的影响和需求可能会因 Android 版本的变化而变化。

另外,不同的硬件厂商可能会在其定制的 Android 版本中对网络管理和电池优化策略进行调整。这意味着在某些设备上,Wi-Fi 锁的行为可能会受到硬件和厂商定制的影响,因此才会出现有的设备能直接广播而有的需要wifi锁这样的情况。

http://www.yayakq.cn/news/687707/

相关文章:

  • 云南做企业建站常州市城市建设局网站
  • 手机网站对企业用户的好处如何利用网站赚钱
  • 深圳建设网站费用明细住房城乡建设部服务平台
  • 蓝色风格企业网站模板书签制作
  • 网站分享设计seo优化工具推荐
  • 网站开发报价方案未来对网站建设的需求
  • 烟台高端品牌网站建设航达建设集团有限公司网站
  • 网站建设超速云免费多多搜索推广
  • 哈尔滨专门做网站wordpress提示插件安装插件
  • 无水印视频素材下载免费网站wordpress推广联盟
  • asp网站建设案例福建省建筑信息平台
  • 青岛建手机网站公司《营销型网站建设实战》
  • 临沂阿里巴巴网站建设深圳注册公司需要多少钱
  • 淘宝客做网站还是做app优酷有wordpress插件吗
  • 高端网站建设教学如何查看网站域名
  • 学网站开发技术传奇网站模块下载
  • wordpress导航站模版做网站建设的怎么寻找客户
  • 网站备案没公司名称wordpress 移动客户端
  • 上海专业网站建设方案电商平台项目
  • 后湖做网站代码素材网站
  • 做韩国外贸网站广告设计专业有哪些
  • 企业形象网站开发业务范畴怎么在网站上做抽奖
  • 滕州建网站怎么用2级目录做网站
  • 做网站一直不知道做什么网站站群系统软件
  • 金华 网站建设tomcat 怎么做网站
  • 织梦响应式网站拉新推广平台有哪些
  • 网站icp没有备案怎么检查网站建设所需软件
  • 电子商务网站建设目标及利益分析做自己的网站服务器多少钱
  • 质量检测中心培训网站上海有什么大公司
  • 常州网站排名提升公司网络推广