用python3.9写一个完整的Windows时钟服务器接收其它电脑的请求,其他电脑可在“日期和时间”设置同步时间
时间: 2024-12-19 08:28:25 浏览: 6
在Python 3.9中创建一个Windows时钟服务器,你可以使用socket编程库来监听客户端的连接并发送系统时间给它们。这里是一个简单的示例:
```python
import socket
import datetime
# 设置服务器地址和端口
SERVER_ADDR = '0.0.0.0'
SERVER_PORT = 8080
def get_server_time():
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def handle_client(client_socket):
request = client_socket.recv(1024).decode()
print(f"Received request from {client_socket.getpeername()}: {request}")
# 发送当前时间
response = "Server time: " + get_server_time()
client_socket.sendall(response.encode())
client_socket.close()
try:
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((SERVER_ADDR, SERVER_PORT))
server.listen(5)
print(f"Server started at {SERVER_ADDR}:{SERVER_PORT}")
while True:
client, addr = server.accept()
print("Accepted connection from", addr)
handle_client(client)
except KeyboardInterrupt:
print("\nClosing the server...")
server.close()
```
这个脚本会在指定的IP地址和端口上创建一个TCP服务器。当有客户端连接时,它会从客户端接收一条消息(在这里我们假设请求就是空字符串),然后返回服务器的时间。如果收到`Ctrl+C`中断信号,服务器将关闭。
要在另一台电脑上同步时间,可以编写一个简单的客户端程序来连接到这个服务器,并获取时间信息,如下面的简单命令行客户端:
```python
import socket
from datetime import datetime
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('服务器IP地址', 8080))
server_time = client.recv(1024).decode()
server_time_str = "Server Time: " + server_time
local_time = datetime.strptime(server_time_str.split(" ")[2:], "%Y-%m-%d %H:%M:%S")
print(f"Synchronized local time: {local_time}")
client.close()
```
替换`'服务器IP地址'`为实际的服务器运行的IP地址。
阅读全文