基于Python的TCP应用案例,包含**服务器端**和**客户端**的完整代码

以下是一个基于Python的TCP应用案例,包含服务器端客户端的完整代码:


1. TCP服务器端(Server)

功能:接收客户端发送的英文消息,转为大写后返回。

python 复制代码
import socket

def tcp_server():
    # 创建TCP socket
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 防止端口占用
    
    # 绑定IP和端口
    server_address = ('127.0.0.1', 8888)
    server_socket.bind(server_address)
    
    # 监听连接
    server_socket.listen(1)
    print("TCP服务器已启动,等待客户端连接...")
    
    try:
        while True:
            # 接受客户端连接
            client_socket, client_address = server_socket.accept()
            print(f"客户端 {client_address} 已连接")
            
            try:
                while True:
                    # 接收数据(最大1024字节)
                    data = client_socket.recv(1024).decode('utf-8')
                    if not data:
                        print(f"客户端 {client_address} 断开连接")
                        break
                    
                    print(f"收到消息: {data}")
                    
                    # 转为大写并发送回客户端
                    response = data.upper()
                    client_socket.send(response.encode('utf-8'))
                    
            except ConnectionResetError:
                print("客户端异常断开")
            finally:
                client_socket.close()
                
    except KeyboardInterrupt:
        print("服务器关闭")
    finally:
        server_socket.close()

if __name__ == '__main__':
    tcp_server()

2. TCP客户端(Client)

功能:连接服务器后,从控制台输入英文消息,接收服务器返回的大写结果。

python 复制代码
import socket

def tcp_client():
    # 创建TCP socket
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 连接服务器
    server_address = ('127.0.0.1', 8888)
    client_socket.connect(server_address)
    print("已连接到服务器,输入消息或输入 'exit' 退出")
    
    try:
        while True:
            # 从控制台输入消息
            message = input("请输入英文: ")
            if message.lower() == 'exit':
                break
            
            # 发送消息到服务器
            client_socket.send(message.encode('utf-8'))
            
            # 接收服务器响应
            response = client_socket.recv(1024).decode('utf-8')
            print(f"服务器返回: {response}")
            
    finally:
        client_socket.close()
        print("连接已关闭")

if __name__ == '__main__':
    tcp_client()

运行步骤

  1. 启动服务器 :先运行服务器端代码(python server.py),它会一直等待客户端连接。
  2. 启动客户端 :再运行客户端代码(python client.py),输入英文消息后,服务器会返回大写版本。

示例交互

text 复制代码
# 客户端控制台
请输入英文: hello world
服务器返回: HELLO WORLD
请输入英文: python
服务器返回: PYTHON
请输入英文: exit
连接已关闭

# 服务器控制台
TCP服务器已启动,等待客户端连接...
客户端 ('127.0.0.1', 12345) 已连接
收到消息: hello world
收到消息: python
客户端 ('127.0.0.1', 12345) 断开连接

关键点说明

  1. 端口号 :示例使用8888,需确保未被占用。
  2. 异常处理 :捕获ConnectionResetError处理客户端异常断开。
  3. 退出机制 :客户端输入exit主动退出循环。
  4. 字节流处理 :TCP传输的是字节流,需用encode()/decode()转换字符串。

这个案例展示了TCP协议的核心功能:可靠的双向通信。你可以在此基础上扩展更多功能(如多线程处理多个客户端)。

相关推荐
Scott9999HH4 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
AI云海5 小时前
python 列表、元组、集合和字典
开发语言·python
二十雨辰6 小时前
[爬虫]-Urllib
爬虫·python
andxe7 小时前
安科士 AndXe 技术博客:400G QSFP112 SR4 光模块|AI 算力与超算短距互联最优方案
网络·人工智能·光模块·光通信
玉鸯7 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
shiyi.十一8 小时前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
weixin_446260858 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
我的xiaodoujiao8 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
DFT计算杂谈8 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习