用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码

简介: 用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码

这几天在用MASM32按Time Protocol(RFC868)协议编写网络对时程序,现在基本完成了。将其中一些有用的函数代码整理了一下。

 我们需要将本地系统时间转换为UTC格式发送给时间服务器,相关转换代码如下:

BaseTimeLow equ 0D53E8000h
BaseTimeHigh equ 19DB1DEh
;:::::::::::::::::::::::::::::::::::::::::::::::::::
FileTime2DateStamp proc lpFileTime: dword
;:::::::::::::::::::::::::::::::::::::::::::::::::::
 mov ecx, lpFileTime
 mov eax, [ecx]
 mov edx, [ecx+4]
 sub eax, BaseTimeLow
 sbb edx, BaseTimeHigh

 mov ecx, 10000000
 div ecx

 RET
FileTime2DateStamp endp


;::::::::::::::::::::::::::::::::::::::::
GetLocalTimeStamp proc
;::::::::::::::::::::::::::::::::::::::::
    local stSystemTime: SYSTEMTIME
    local stFileTime: FILETIME

    invoke GetSystemTime, addr stSystemTime
    invoke SystemTimeToFileTime, addr stSystemTime, addr stFileTime
    invoke FileTime2DateStamp, addr stFileTime

    ret
GetLocalTimeStamp endp

时间服务器返回的是从1900年1月1日午夜到现在的秒数,将其转换为本地时间的相关代码如下:

;::::::::::::::::::::::::::::::::::::::::::::::::::::
_MemCpy proc  lpD, lpS, dwSize
;::::::::::::::::::::::::::::::::::::::::::::::::::::
    mov     esi, lpS
    mov     edi, lpD
    mov     ecx, dwSize
    rep     movsb

    ret
_MemCpy endp


g_szFmtDateTime db "%d-%d-%d %d:%d:%d", 0
;::::::::::::::::::::::::::::::::::::::::::::::::::::
printDateTime proc dwTimeStamp: dword
;::::::::::::::::::::::::::::::::::::::::::::::::::::
    local buf[30]: byte
    local stSysTime: SYSTEMTIME
    local stFileTime: FILETIME
    local stLocFileTime: FILETIME
    local li: LARGE_INTEGER

    
    invoke RtlZeroMemory, addr stSysTime, sizeof stSysTime
    
    mov stSysTime.wYear, 1900
    mov stSysTime.wMonth, 1
    mov stSysTime.wDay, 1
    
    invoke SystemTimeToFileTime, addr stSysTime, addr stFileTime
    invoke _MemCpy, addr li, addr stFileTime, sizeof stFileTime

    mov eax,  dwTimeStamp
    mov  edx, 10000000
    mul  edx; edx=10000000

    lea edi, li.QuadPart
    add [edi], eax
    adc [edi+4], edx

    invoke _MemCpy, addr  stFileTime, addr li, sizeof li
    invoke FileTimeToLocalFileTime, addr stFileTime, addr stLocFileTime

    lea edi, stSysTime;push edi
    invoke FileTimeToSystemTime, addr stLocFileTime, edi    ;edi=addr stSysTime
    ;pop edi    movzx eax, (SYSTEMTIME ptr [edi]).wYear
    movzx ebx, (SYSTEMTIME ptr [edi]).wMonth
    movzx ecx, (SYSTEMTIME ptr [edi]).wDay
    movzx edx, (SYSTEMTIME ptr [edi]).wHour
    movzx esi, (SYSTEMTIME ptr [edi]).wMinute
    movzx edi, (SYSTEMTIME ptr [edi]).wSecond

    invoke wsprintf, addr buf, addr g_szFmtDateTime, eax, ebx, ecx,edx, esi, edi
    invoke StdOut, addr buf

    ret
printDateTime endp
相关文章
|
3月前
|
负载均衡 网络协议 算法
|
2月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
2月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
172 3
|
3月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
94 11
|
3月前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
81 2
|
3月前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
103 3
|
3月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
196 3
|
3月前
|
网络虚拟化
生成树协议(STP)及其演进版本RSTP和MSTP,旨在解决网络中的环路问题,提高网络的可靠性和稳定性
生成树协议(STP)及其演进版本RSTP和MSTP,旨在解决网络中的环路问题,提高网络的可靠性和稳定性。本文介绍了这三种协议的原理、特点及区别,并提供了思科和华为设备的命令示例,帮助读者更好地理解和应用这些协议。
128 4
|
3月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
90 13
|
3月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密

热门文章

最新文章