# 简单TCP服务器实现:接收消息并存储到本地文件


背景介绍

本项目旨在实现一个基于Python的TCP服务器,用于接收用户输入的消息并存储到本地文件中。该实现涉及网络通信、文件读写和错误处理等核心知识点,可运行在本地开发环境中,无需依赖第三方框架或服务。

思路分析

  1. 网络通信:使用Python的socket模块实现TCP通信,通过SOCK_STREAM协议确保连接可靠性。
  2. 文件操作:通过with open确保文件在写入后自动关闭,避免资源泄漏。
  3. 错误处理:在读取输入时,通过异常捕获处理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天内完成。