server 代码
# -*- coding: utf-8 -*-
import time
import socket
import threading
def handle_client(client_socket):
while True:
# 获取当前时间并发送给客户端
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
client_socket.send(current_time.encode())
time.sleep(3)
def server():
# 创建套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_address = ('127.0.0.1', 5000)
server_socket.bind(server_address)
# 监听连接
server_socket.listen(5) # 可以同时处理 5 个连接请求
print("Server is listening...")
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
print(f"Connected by {client_address}")
# 为每个客户端创建一个新线程进行处理
client_thread = threading.Thread(target=handle_client, args=(client_socket,))
client_thread.start()
if __name__ == "__main__":
server()
client 代码
# -*- coding: utf-8 -*-
import time
import socket
import subprocess
import platform
import ctypes
# 从 ctypes 中导入 WINFUNCTYPE 和 wintypes
from ctypes import WINFUNCTYPE, wintypes
class SYSTEMTIME(ctypes.Structure):
_fields_ = [
("wYear", ctypes.c_ushort),
("wMonth", ctypes.c_ushort),
("wDayOfWeek", ctypes.c_ushort),
("wDay", ctypes.c_ushort),
("wHour", ctypes.c_ushort),
("wMinute", ctypes.c_ushort),
("wSecond", ctypes.c_ushort),
("wMilliseconds", ctypes.c_ushort)
]
def set_system_time_windows(time_str):
time_struct = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
system_time = SYSTEMTIME()
system_time.wYear = time_struct.tm_year
system_time.wMonth = time_struct.tm_mon
system_time.wDay = time_struct.tm_mday
system_time.wHour = time_struct.tm_hour
system_time.wMinute = time_struct.tm_min
system_time.wSecond = time_struct.tm_sec
# 设置系统时间
ctypes.windll.kernel32.SetSystemTime(ctypes.byref(system_time))
def client():
# 创建套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
server_address = ('127.0.0.1', 5000)
client_socket.connect(server_address)
while True:
# 接收服务器发送的时间
received_time = client_socket.recv(1024).decode()
print(f"Received time from server: {received_time}")
# 设置系统时间
set_system_time_windows(received_time)
time.sleep(3)
if __name__ == "__main__":
client()