精华内容
下载资源
问答
  • linux联网更新时间

    2019-10-07 23:01:20
    NTP服务器(上海) :ntp.api.bz 中国ntp服务器:... 1. 安装ntp # pacman -S ntp 2. 更新时间 # ntpdate -u ntp.api.bz 转载于:https://www.cnblogs.com/mc-r/p/11411927.html...


        NTP服务器(上海) :ntp.api.bz
        中国ntp服务器:cn.pool.ntp.org  pool.ntp.org

    1. 安装ntp

    # pacman -S ntp

    2. 更新时间

    # ntpdate -u ntp.api.bz

     

    转载于:https://www.cnblogs.com/mc-r/p/11411927.html

    展开全文
  • CentOS联网更新时间

    2018-03-15 17:16:00
    连网更新时间,如果成功,将系统时间,写入BOIS 注释: time.windows.com 为时间服务器,如果这个不可以,可以再试试其它的时间服务器,可以看看windows下的时间服务器 转载于:...
    # ntpdate time.windows.com && hwclock -w

    连网更新时间,如果成功,将系统时间,写入BOIS

    注释:time.windows.com为时间服务器,如果这个不可以,可以再试试其它的时间服务器,可以看看windows下的时间服务器

    转载于:https://my.oschina.net/kangweb/blog/1635413

    展开全文
  • 系统默认在联网后每隔一分钟尝试获取网络时间一次,总共尝试三次, 如果还是失败,则会在10天后再发起时间获取。 如果需要修改默认配置,参考以下文件及项目。 config_ntpPollingIntervalShorter 为重试时间 ...

    系统默认在联网后每隔一分钟尝试获取网络时间一次,总共尝试三次, 如果还是失败,则会在10天后再发起时间获取。

    如果需要修改默认配置,参考以下文件及项目。
    config_ntpPollingIntervalShorter 为重试时间
    config_ntpRetry 为重试次数

    frameworks/base/core/res/res/values/config.xml

    展开全文
  • Android 时间更新机制之网络更新时间

    千次阅读 2015-05-13 22:36:56
    综述:Android网络时间更新,大体分两类。1、moderm相关更新,2、网络更新。本次主要介绍android设备网路时间同步。

    转载请注明出处:http://blog.csdn.net/droyon/article/details/45701257

    综述:Android网络时间更新,大体分两类。1、moderm相关更新,2、网络更新。本次主要介绍网路更新时间,主要涉及到NetworkTimeUpdateService,该类运行在SystemServer(ActivityManagerService)进程中。它有点特殊,从名字来看,其实Service,其实它和WifiService、ConnectivityManagerService等系统Service不同。
    SystemServer.java

    try {
                startBootstrapServices();
                startCoreServices();
                startOtherServices();
            } catch (Throwable ex) {
                Slog.e("System", "******************************************");
                Slog.e("System", "************ Failure starting system services", ex);
                throw ex;
            }

    startOtherServices方法中,会初始化该类实例:

    networkTimeUpdater = new NetworkTimeUpdateService(context);

    在ActivityManagerService的systemReady方法中,初始化时间更新环境。

    mActivityManagerService.systemReady(new Runnable() {
                @Override
                public void run() {
                try {
                        if (networkManagementF != null)       networkManagementF.systemReady();
                    } catch (Throwable e) {
                        reportWtf("making Network Managment Service ready", e);
                    }
                }
    }

    涉及代码路径如下:
    frameworks/base/services/core/java/com/android/server/NetworkTimeUpdateService.java
    frameworks/base/core/java/android/util/NtpTrustedTime.java
    frameworks/base/core/java/android/net/SntpClient.java

    一、NetworkTimeUpdateService实例

    public NetworkTimeUpdateService(Context context) {
            mContext = context;
            mTime = NtpTrustedTime.getInstance(context);
            mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
            Intent pollIntent = new Intent(ACTION_POLL, null);
            mPendingPollIntent = PendingIntent.getBroadcast(mContext, POLL_REQUEST, pollIntent, 0);//时间同步有可能超时,使用该PendingIntent进行(间隔再次发起)时间同步。
    
            mPollingIntervalMs = mContext.getResources().getInteger(
                    com.android.internal.R.integer.config_ntpPollingInterval);//10天
            mPollingIntervalShorterMs = mContext.getResources().getInteger(
                    com.android.internal.R.integer.config_ntpPollingIntervalShorter);//30秒
            mTryAgainTimesMax = mContext.getResources().getInteger(
                    com.android.internal.R.integer.config_ntpRetry);
            mTimeErrorThresholdMs = mContext.getResources().getInteger(
                    com.android.internal.R.integer.config_ntpThreshold);
    
            mDefaultServer = ((NtpTrustedTime) mTime).getServer();
            mNtpServers.add(mDefaultServer);
            for (String str : SERVERLIST)
            {
               mNtpServers.add(str);
            }
            mTryAgainCounter = 0;
        }

    在该构造上,有几个重要的变量:
    1、mPollingIntervalMs:多次尝试同步时间无果,10天会再次发起时间同步请求
    2、mPollingIntervalShorterMs :时间同步超时,再次发起时间同步请求。
    3、SERVERLIST:时间同步服务器。此处建议多增加几个时间同步服务器,大陆、美国、台湾等多梯度配置。
    4、初始化NtpTrustedTime对象。

    mTime = NtpTrustedTime.getInstance(context);

    一、NetworkTimeUpdateService初始化时间同步环境
    开机后,会调用该类的systemRunning方法,在该方法中:

    public void systemRunning() {
            registerForTelephonyIntents();
            registerForAlarms();
            registerForConnectivityIntents();
    
            HandlerThread thread = new HandlerThread(TAG);
            thread.start();
            mHandler = new MyHandler(thread.getLooper());
            // Check the network time on the new thread
            mHandler.obtainMessage(EVENT_POLL_NETWORK_TIME).sendToTarget();
    
            mSettingsObserver = new SettingsObserver(mHandler, EVENT_AUTO_TIME_CHANGED);
            mSettingsObserver.observe(mContext);
        }

    1、registerForTelephonyIntents该方法,注册监听来自Telephony Ril相关的广播。此部分会在moderm相关同步时间中介绍。

    private void registerForTelephonyIntents() {
            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction(TelephonyIntents.ACTION_NETWORK_SET_TIME);
            intentFilter.addAction(TelephonyIntents.ACTION_NETWORK_SET_TIMEZONE);
            mContext.registerReceiver(mNitzReceiver, intentFilter);
        }

    2、registerForAlarms此方法,是配合第“一”中介绍的mPendingPollIntent 来工作的,主要作用是构造handler Message并再次发起时间同步请求。
    3、registerForConnectivityIntents此方法监听移动数据连接,移动网络连接后,收到信息,发起时间同步请求。此部分会在moderm相关同步时间中介绍。

    private void registerForConnectivityIntents() {
            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
            mContext.registerReceiver(mConnectivityReceiver, intentFilter);
        }

    4、构建Message,发起时间同步请求。

    HandlerThread thread = new HandlerThread(TAG);
            thread.start();
            mHandler = new MyHandler(thread.getLooper());
            // Check the network time on the new thread
            mHandler.obtainMessage(EVENT_POLL_NETWORK_TIME).sendToTarget();

    5、构建监听数据库的Observer,监听来自设置等发起的时间同步请求。在SettingsObserver中构建handler Message请求,发起时间同步。

    mSettingsObserver = new SettingsObserver(mHandler, EVENT_AUTO_TIME_CHANGED);
            mSettingsObserver.observe(mContext);

    我们的第二部分,很多地方都会主动或者被动发送Handler Message请求,在我们Handler中,我们是如何处理的那?

    三、时间同步请求处理逻辑。
    在第二部分,我们讲到了接收的来自Telephony相关的广播,或者数据库变化,我们都会发送Message给Handler,我们的handler是如下处理这些请求的:

    private class MyHandler extends Handler {
    
            public MyHandler(Looper l) {
                super(l);
            }
    
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case EVENT_AUTO_TIME_CHANGED:
                    case EVENT_POLL_NETWORK_TIME:
                    case EVENT_NETWORK_CONNECTED:
                        onPollNetworkTime(msg.what);
                        break;
                }
            }
        }

    接收请求类型:EVENT_AUTO_TIME_CHANGED、EVENT_POLL_NETWORK_TIME、
    EVENT_NETWORK_CONNECTED,这些请求逻辑,我们都会发起onPollNetworkTime来进行相关逻辑处理。
    也就是说,onPollNetworkTime方法就是我们时间同步的主要关注对象。
    1、onPollNetworkTime:

    private void onPollNetworkTime(int event) {
    //1、是否勾选自动同步时间配置
            // If Automatic time is not set, don't bother.
            if (!isAutomaticTimeRequested()) return;
    //2、mNitzTimeSetTime 来自Moderm,如果当前时间刚通过moderm更新不久,则不进行时间同步。
            final long refTime = SystemClock.elapsedRealtime();
            // If NITZ time was received less than mPollingIntervalMs time ago,
            // no need to sync to NTP.
            if (mNitzTimeSetTime != NOT_SET && refTime - mNitzTimeSetTime < mPollingIntervalMs) {
                resetAlarm(mPollingIntervalMs);
                return;
            }
            //3、如果机器刚启动,或者机器运行时间大于mPollingIntervalMs,即10天,或者设置等发起的主动更新时间请求,则发起网络时间同步请求。否则,10天后再进行时间同步。
            final long currentTime = System.currentTimeMillis();
            if (DBG) Log.d(TAG, "System time = " + currentTime);
            // Get the NTP time
            if (mLastNtpFetchTime == NOT_SET || refTime >= mLastNtpFetchTime + mPollingIntervalMs
                    || event == EVENT_AUTO_TIME_CHANGED) {
                if (DBG) Log.d(TAG, "Before Ntp fetch");
    //3.1、是否含有时间缓冲,如无,发起时间同步,
                // force refresh NTP cache when outdated
                if (mTime.getCacheAge() >= mPollingIntervalMs) {
                    //mTime.forceRefresh();
                    int index = mTryAgainCounter % mNtpServers.size();
                    if (DBG) Log.d(TAG, "mTryAgainCounter = " + mTryAgainCounter + ";mNtpServers.size() = " + mNtpServers.size() + ";index = " + index + ";mNtpServers = " + mNtpServers.get(index));
                    //3.1.1、遍历时间服务器,发起时间同步
                    if (mTime instanceof NtpTrustedTime)
                    {
                        ((NtpTrustedTime) mTime).setServer(mNtpServers.get(index));
                        mTime.forceRefresh();
                        ((NtpTrustedTime) mTime).setServer(mDefaultServer);
                    }
                    else
                    {
                        mTime.forceRefresh();
                    }
                }
    //3.2、获取最新同步的时间缓冲数据,如无,则再次发起时间同步,间隔时间为mPollingIntervalShorterMs,即30秒。
                // only update when NTP time is fresh
                if (mTime.getCacheAge() < mPollingIntervalMs) {
                    final long ntp = mTime.currentTimeMillis();
                    mTryAgainCounter = 0;
                    // If the clock is more than N seconds off or this is the first time it's been
                    // fetched since boot, set the current time.
                    //3.2.1、如果开机第一次同步或者最新时间与当前时间差别超过mTimeErrorThresholdMs即25秒,则进行时间设定。否则认定新同步时间与当前时间差别不大,不覆盖当前时间。
                    if (Math.abs(ntp - currentTime) > mTimeErrorThresholdMs
                            || mLastNtpFetchTime == NOT_SET) {
                        // Set the system time
                        if (DBG && mLastNtpFetchTime == NOT_SET
                                && Math.abs(ntp - currentTime) <= mTimeErrorThresholdMs) {
                            Log.d(TAG, "For initial setup, rtc = " + currentTime);
                        }
                        if (DBG) Log.d(TAG, "Ntp time to be set = " + ntp);
                        // Make sure we don't overflow, since it's going to be converted to an int
                        //3.2.2、设定同步时间
                        if (ntp / 1000 < Integer.MAX_VALUE) {
                            SystemClock.setCurrentTimeMillis(ntp);
                        }
                    } else {
                        if (DBG) Log.d(TAG, "Ntp time is close enough = " + ntp);
                    }
                    mLastNtpFetchTime = SystemClock.elapsedRealtime();
                } else {
                    // Try again shortly
                    //3.3 如果不大于最大同步次数,30秒后进行时间同步,否则,10天后更新。
                    mTryAgainCounter++;
                    if (mTryAgainTimesMax < 0 || mTryAgainCounter <= mTryAgainTimesMax) {
                        resetAlarm(mPollingIntervalShorterMs);
                    } else {
                        // Try much later
                        mTryAgainCounter = 0;
                        resetAlarm(mPollingIntervalMs);
                    }
                    return;
                }
            }
            //4、如果刚更新时间不久,则10天后再发起时间同步请求。
            resetAlarm(mPollingIntervalMs);
        }

    四、三中介绍了时间获取的相关逻辑,我们接下来介绍下时间是如何发起同步的,这个方法的主角为:NtpTrustedTime
    在该类中通过forceRefresh方法来更新获取服务器时间。

    public boolean forceRefresh() {
            if (mServer == null) {
                // missing server, so no trusted time available
                return false;
            }
    
            if (LOGD) Log.d(TAG, "forceRefresh() from cache miss");
            final SntpClient client = new SntpClient();
            if (client.requestTime(mServer, (int) mTimeout)) {
                mHasCache = true;
                mCachedNtpTime = client.getNtpTime();
                mCachedNtpElapsedRealtime = client.getNtpTimeReference();
                mCachedNtpCertainty = client.getRoundTripTime() / 2;
                return true;
            } else {
                return false;
            }
        }

    在该方法逻辑中,通过SntpClient来封装请求。
    SntpClient.java

    public boolean requestTime(String host, int timeout) {
            DatagramSocket socket = null;
            try {
                socket = new DatagramSocket();
                socket.setSoTimeout(timeout);
                InetAddress address = InetAddress.getByName(host);
                byte[] buffer = new byte[NTP_PACKET_SIZE];
                DatagramPacket request = new DatagramPacket(buffer, buffer.length, address, NTP_PORT);
    
                // set mode = 3 (client) and version = 3
                // mode is in low 3 bits of first byte
                // version is in bits 3-5 of first byte
                buffer[0] = NTP_MODE_CLIENT | (NTP_VERSION << 3);
    
                // get current time and write it to the request packet
                long requestTime = System.currentTimeMillis();
                long requestTicks = SystemClock.elapsedRealtime();
                writeTimeStamp(buffer, TRANSMIT_TIME_OFFSET, requestTime);
    
                socket.send(request);
    
                // read the response
                DatagramPacket response = new DatagramPacket(buffer, buffer.length);
                socket.receive(response);
                long responseTicks = SystemClock.elapsedRealtime();
                long responseTime = requestTime + (responseTicks - requestTicks);
    
                // extract the results
                long originateTime = readTimeStamp(buffer, ORIGINATE_TIME_OFFSET);
                long receiveTime = readTimeStamp(buffer, RECEIVE_TIME_OFFSET);
                long transmitTime = readTimeStamp(buffer, TRANSMIT_TIME_OFFSET);
                long roundTripTime = responseTicks - requestTicks - (transmitTime - receiveTime);
                // receiveTime = originateTime + transit + skew
                // responseTime = transmitTime + transit - skew
                // clockOffset = ((receiveTime - originateTime) + (transmitTime - responseTime))/2
                //             = ((originateTime + transit + skew - originateTime) +
                //                (transmitTime - (transmitTime + transit - skew)))/2
                //             = ((transit + skew) + (transmitTime - transmitTime - transit + skew))/2
                //             = (transit + skew - transit + skew)/2
                //             = (2 * skew)/2 = skew
                long clockOffset = ((receiveTime - originateTime) + (transmitTime - responseTime))/2;
                // if (false) Log.d(TAG, "round trip: " + roundTripTime + " ms");
                // if (false) Log.d(TAG, "clock offset: " + clockOffset + " ms");
    
                // save our results - use the times on this side of the network latency
                // (response rather than request time)
                mNtpTime = responseTime + clockOffset;
                mNtpTimeReference = responseTicks;
                mRoundTripTime = roundTripTime;
            } catch (Exception e) {
                if (false) Log.d(TAG, "request time failed: " + e);
                return false;
            } finally {
                if (socket != null) {
                    socket.close();
                }
            }
    
            return true;
        }

    我们传入在NetworkTimeUpdateService传入的服务器地址以及请求超时时间,向host服务器发起请求,并将相应结果按照编解码规则封装进二进制数组。

    总结:NetworkTimeUpdateService时间同步,一旦发起成功的时间同步,时间数据会存在内存中,并根据当前机器运行时间来设定最新的时间。

    展开全文
  • Android 系统时间更新机制研究

    千次阅读 2016-09-10 10:30:45
    遇到的实际问题如下:1、手机恢复出厂设置后,系统时间没有及时更新。2、手机使用当中时间同步更新后,时间快了几分钟。3、手机状态栏的时间的分钟显示没有及时更新。 鉴于各个项目问题的重复出现,有很多地方不是...
  • Ubuntu 18 系统时间问题 - 解决其使用 BIOS 时间,不联网同步 Ubuntu 18 系统时间不对,会遇到很多问题, 问题描述: Ubuntu 18 系统时间不对,大概差 8 个小时,因为在 BIOS 中的时间...更新时间 sudo apt-get in...
  • Android 系统时间自动更新机制

    千次阅读 2016-10-22 16:53:34
    Android中两种时间更新机制NITZNITZ(Network Identity and Time Zone,网络标识和时区),是一种用于自动配置本地的时间和日期的机制,同时也通过无线网向移动设备提供运营商信息。NITZ是自从PHASE 2+ RELEASE 96 的...
  • 我的linux板卡是不联网的,但是MCU所在的板卡通过2G模块连接物联网。但是linux板卡有时需要记录相对准确的时间。理想情况是安装一个带电池的RTC模块通过I2C连接到linux板卡上。但我对时间的准确度要求并不是很高。差...
  • Android -- 系统网络时间更新NetworkTimeUpdateService服务解析 Android系统时间更新主要涉及到两种时间:NITZ时间和NTP时间。NITZ时间与手机服务运营商关系密切;而NTP网络时间则较为独立,访问某个服务器,获取...
  • android源码分析之网络更新时间

    千次阅读 2016-12-18 15:58:45
    android网络更新时间 android时间的更新方式,一般有moderm和网络更新两种,MTK在此基础上,添加了GPS的方式。现在分析的是网络更新时间的方式 从网络更新只能更新时间但是无法改变时区;从手机网络运营商处获取时间...
  • NTP实现联网校对时间详解

    千次阅读 2019-01-03 15:37:47
    本文档主要介绍通过ntp服务实现开发板的联网自动校对时间。 2.简介 ntp的下载编译,以及开发板接通外网,实现ntp服务。 3.开发环境 开发语言:C语言 编 译 器:arm-linux-geaubihf-gcc 编辑工具:vi,vim ...
  • Appstore检查自动更新时间

    千次阅读 2015-12-16 23:31:55
    这玩意不是伪后台,有一个常驻后台进程,每隔4小时联网检测更新,费电费流量,尤其像lz这样grps24小时不关的。你想想,当你有时候e网信号不好,网速很渣的时候,这货又开始检测软件更新,但是网又一下子连不上,...
  • 最近项目中遇到一个很奇怪的问题,根据LOG分析了好久终于确定了原因。现在大部分的智能电视都是用的Android 4.4的源码进行开发的...一、拿到问题一开始有点不知所措,后面先了解了下Android网络更新时间的机制如下:1...
  • 本文以CentOS为例,演示如何查看、设置系统时间,以及自动从互联网更新系统时间。 1,查看系统时间 执行date命令可以查看当前系统的时间: 2,手动修改系统时间 (1)执行如下命令可以设置一个新的系统...
  • android自动更新时间时区机制

    万次阅读 2015-11-07 17:39:36
    名词解释: NITZ:NITZ(Network Identity and Time Zone)或网络标识和时区,是一种用于自动配置... 96 的GSM中的可选功能,经常被用来自动更新移动电话的系统时钟。 NTP:NTP(Network Time Protocol)提供准确时间
  • 前段时间测试提了一个bug,是这样的,设置一个闹铃,等待闹铃时间到,闹铃响应,然后插拔电池,让手机系统时间恢复到出厂默认时间,让手机联网,等待手机时间更新后,已经过期的闹钟突然响了,这让人百思不得其解,...
  • Ubuntu 自动更新系统时间

    千次阅读 2016-08-25 14:53:56
    一、 安装ntpdate ...二、选择其中一个服务器更新系统时间 $ sudo ntpdate ntp.ubuntu.com $ sudo ntpdate pool.ntp.org $ sudo ntpdate de.pool.ntp.org  $ sudo ntpdate us.pool.ntp.org 三、设定
  • 说起使用ntp协议更新时间,很多人肯定会想起开源的ntp协议实现ntp-4.2.8p,但是最新的ntp实现已经不完全能支持跨平台的编译了,尤其是在arm linux平台上,很多时候要么是编译不过去,要么是运行有问题 其实最新的...
  • ubuntu更新设置

    千次阅读 2015-08-05 16:25:23
    ubuntu操作系统发布时,为了减小操作系统的体积,仅仅配备了基本的系统软件、应用软件。我们开发中需要用到的大部分软件都需要在使用中从网上...可以上网的虚拟机或物理机,直接可从互联网更新软件。 ubuntu默认
  • 为什么要搭建虚拟环境? 在开发过程中, 当需要使用python的...问题:如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版
  • c#获取网络时间并实时更新

    千次阅读 2019-10-11 19:43:00
    1.获取网络时间 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace WIFI_TCP_test { class GetNetDateTime ...
  • linux通过网络更新系统时间

    千次阅读 2014-08-20 16:36:51
    通过网络同步时间 sudo ntpdate time-a.nist.gov 把时间写入CMOS sudo clock –w 查看时间 date
  • 我们都知道不能用子线程来更新UI,否则可能引起主线程阻塞引起
  • 我的电脑(MacBook Pro 2019款)提示系统更新,就去更新了,安装包下载完成了,就进行了安装操作,结果安装了6个小时,一直卡着,电脑发高烧了!!! 更新提示: 安装卡住: 二. 原因分析 电源或者网络不稳定 三. ...
  • linux 集群时间同步 (不联网)

    千次阅读 2019-10-28 09:27:57
    chkconfig iptables off 第四步:关闭selinux //打开selinux配置文件 vi /etc/selinux/config 把selinux的属性改为 disabled 注意不要改 selinuxtype 第五步:修改ntp配置文件 网络同步时间直接使用ntpdate ntp4....
  • 注:本文不讨论NITZ时间 源码位置:  frameworks/base/services/core/java/com/android/server/NetworkTimeUpdateService.java  frameworks/base/core/java/android/util/NtpTrustedTime.java  frameworks/base/...
  • ubuntu操作系统发布时,为了减小操作系统的体积,仅仅配备了基本的系统软件、应用软件。我们开发中需要用到的大部分...可以上网的虚拟机或物理机,直接可从互联网更新软件。 ubuntu默认的更新源速度不是很快,我们可
  • 在对电脑系统时间进行“自动与Internet时间服务器同步”的时候,一点击“立即更新”,就会出现提示:“RPC服务器不可用”。一般而言,出现这种情况主要有以下几种原因和解决办法: 1.RPC服务没有启动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,650
精华内容 29,860
关键字:

如何联网更新时间