背景介绍
本项目旨在实现一个基于Python的TCP服务器,用于接收用户输入的消息并存储到本地文件中。该实现涉及网络通信、文件读写和错误处理等核心知识点,可运行在本地开发环境中,无需依赖第三方框架或服务。
思路分析
- 网络通信:使用Python的
socket模块实现TCP通信,通过SOCK_STREAM协议确保连接可靠性。 - 文件操作:通过
with open确保文件在写入后自动关闭,避免资源泄漏。 - 错误处理:在读取输入时,通过异常捕获处理EOF(端口关闭)等异常情况,避免程序崩溃。
代码实现
import socket
# 定义本地文件路径
messages_file = "messages.txt"
# 设置服务器监听的端口
server_port = 8080
# 创建TCP服务器
def start_server():
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket:
server_socket.bind(("localhost", server_port))
server_socket.listen(1) # 监听1个连接
print("Server listening on port:", server_port)
while True:
# 接收连接并读取输入
client_socket, client_address = server_socket.accept()
print(f"Received connection from {client_address}")
message = client_socket.recv(1024).rstrip('\n\r')
if message == '': # 检查是否有输入结束
print("No input received")
continue # 假设输入已结束
# 将消息写入文件
with open(messages_file, 'w') as file:
file.write(f"{message}\n")
# 关闭连接
client_socket.close()
print("Message written to messages.txt:", message)
except EOFError:
print("No more messages to read")
# 开始服务器
if __name__ == "__main__":
start_server()
总结
本代码实现了以下功能:
1. 启动一个监听指定端口的TCP服务器,支持接收消息并存储到messages.txt文件中。
2. 使用with open确保文件在写入后自动关闭,避免资源泄漏。
3. 通过异常捕获处理EOF异常,确保程序在输入结束时正常退出。
该项目可在本地开发环境运行,无需依赖第三方框架,适合中级程序员在1~3天内完成。