vb 获取网络时间较快的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb 获取网络时间较快的代码相关的知识,希望对你有一定的参考价值。

如题,目前百度搜到的一些VB代码,执行好像都比较慢,甚至死机,能否给一段执行较快效率高的代码(本人看到其他一些知名软件获取网络时间非常快,每次都只要一秒,软件的名称我就不说了),不甚感谢,可以帖出,也可以发我919570050.
我用的是vb 6.0

直接用vb转换GMT时间

Private Function getWebDatetime() As String

Dim XmlHttp As Object

Set XmlHttp = CreateObject("Microsoft.XMLHTTP")

XmlHttp.Open "POST", "http://www.baidu.com", False

XmlHttp.send

getWebDatetime = CDate(1 / 3 + CDbl(CDate(Mid$(XmlHttp.getResponseHeader("Date"), 5, 21))))

Set XmlHttp = Nothing

End Function

扩展资料:

读取网站服务器返回的时间的代码

Private Function getWebDatetime() As String

Dim XmlHttp As Object, objJs As Object

Set XmlHttp = CreateObject("Microsoft.XMLHTTP")

XmlHttp.Open "POST", "http://www.baidu.com", False

XmlHttp.send

Set objJs = CreateObject("msscriptcontrol.scriptcontrol")

objJs.Language = "jScript"

getWebDatetime = objJs.Eval("var dt = new Date('" & XmlHttp.getResponseHeader("Date") & "');var date = [  [dt.getFullYear(), dt.getMonth() + 1, dt.getDate()].join('-'),  [dt.getHours(), dt.getMinutes(), dt.getSeconds()].join(':')].join(' ').replace(/(?=\\b\\d\\b)/g, '0');date;")

Set XmlHttp = Nothing

Set objJs = Nothing

End Function



参考技术A 函数:返回格式yyyy-M-d hh:mm:ss的日期时间,默认从国家授时中心网站获取(比较慢),原理,获取网站的http头,从头中得到服务器的日期时间,只要服务器日期时间准确则获取的日期时间就是准确的,可以从大网站获取,速度快且准确
Function getDateTime(Optional url As String) As String
    Dim xmlhttp
    Dim dt As String
    Dim m As Integer, n As Integer

    On Error Resume Next
    Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
    If url = "" Then url = "http://www.time.ac.cn"
    With xmlhttp
        .Open "Get", url, False, "", ""
        .setRequestHeader "If-Modified-Since", "0"
        .setRequestHeader "Cache-Control", "no-cache"
        .setRequestHeader "Connection", "close"
        .Send
        dt = .getAllResponseHeaders()
        m = InStr(1, dt, "Date:", vbTextCompare)
        n = InStr(1, dt, "GMT", vbTextCompare)
        If m > 0 Then getDateTime = CDate(Trim(Split(Mid(dt, m + 5, n - m - 5), ",")(1))) + #8:00:00 AM#
    End With
    Set xmlhttp = Nothing
End Function
调用方法:
dt=getDateTime("http://www.baidu.com")  '从百度服务器获取时间,我这里获取很快(毫秒级),取决于你访问百度的速度
dt=getDateTime()  '从国家授时中心获取时间,我这里访问比较慢

追问

谢谢,我输入QQ.com,速度较快,能不能给一段判断网络是否连接的代码,判断速度也快一的

本回答被提问者采纳

较快的线程阻塞较慢的线程

【中文标题】较快的线程阻塞较慢的线程【英文标题】:A faster thread blocks slower thread 【发布时间】:2014-11-19 10:43:49 【问题描述】:

我正在研究点云查看器,我的设计基于两个线程

第一个线程更新点云数据(约 10 fps) 第二个线程是一个 D3D 渲染器,用于将点集渲染到屏幕上(大约 90 fps)

所以我的代码如下所示:

std::shared_ptr<PointCloud> pointcloud;
CRITICAL_SECTION updateLock;
void FirstThreadProc()

      while(true)
      
       /* some algorithm processes point cloud, takes time */
            EnterCriticalSection(&updateLock);
            pointcloud->Update(data,length,...); //also takes time to copy and process
            LeaveCriticalSection(&updateLock);
      

/*...*/  
std::shared_ptr<D3DRenderer> renderer;
void SecondThreadProc()

    MSG msg =  0 ;
    while (WM_QUIT != msg.message)
    
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        
        else
        
            EnterCriticalSection(&updateLock);
            renderer->Render(pointcloud);
            LeaveCriticalSection(&updateLock);
        
     

我认为第二个线程比第一个线程快得多,所以当第一个线程进入临界区时,第二个线程被阻塞,所以渲染器窗口时不时应该冻结。但我现在观察到的是渲染器窗口运行非常流畅,相机旋转或放大/缩小都很好,但是第一个线程非常不稳定,它的 fps 范围从 10 fps 到 1 fps。

我正在考虑两个点云缓冲区,然后第一个线程在临界区之外更新第二个缓冲区,然后在临界区内交换两个缓冲区。它会起作用吗?

【问题讨论】:

您尝试时出了什么问题? @KerrekSB 我不明白... 您的问题是“它会起作用吗?”作为回报,我的问题是为什么你有理由相信它不会。 这个问题似乎离题了,因为它是关于一个从未实际存在过的假设问题。 ...虽然仅供参考:是的,像这样的双缓冲(甚至是三缓冲)是完全正常的,很多人都成功使用它。 【参考方案1】:

如this 中所述,CRITICAL_SECTION 不提供先进先出 (FIFO) 排序。由于第二个线程比第一个线程快得多,而且它的整个循环都是临界区,所以它会在离开后立即进入临界区。这可能总是在关键部分,并将第一个排除在外。

我的解决方案是将第二个线程的更多工作放在关键部分之外,然后它就可以正常工作了。

【讨论】:

以上是关于vb 获取网络时间较快的代码的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络复习笔记整理

iOS项目开发实战——使用同步请求获取网页源码

在vb.net中使用Iphlpapi.dll获取网络信息

社交网络中信息内容的计算公式

C语言经典算法:如何较快的分解质因数

Pandas大数据筛选数据经验教训一则