基于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协议的核心功能:可靠的双向通信。你可以在此基础上扩展更多功能(如多线程处理多个客户端)。

相关推荐
2501_915374353 小时前
LangChain自动化工作流实战教程:从任务编排到智能决策
python·langchain·自动化
chilavert3184 小时前
深入剖析AI大模型:Prompt 开发工具与Python API 调用与技术融合
人工智能·python·prompt
Mallow Flowers6 小时前
Python训练营-Day31-文件的拆分和使用
开发语言·人工智能·python·算法·机器学习
蓝婷儿6 小时前
Python 爬虫入门 Day 2 - HTML解析入门(使用 BeautifulSoup)
爬虫·python·html
涟漪海洋7 小时前
基于Netty的UDPServer端和Client端解决正向隔离网闸数据透传问题
网络
struggle20257 小时前
Burn 开源程序是下一代深度学习框架,在灵活性、效率和可移植性方面毫不妥协
人工智能·python·深度学习·rust
腾飞开源7 小时前
17_Flask部署到网络服务器
python·flask·python web开发·flask快速入门教程·flask框架·flask视频教程·flask会话技术
Mikhail_G7 小时前
Python应用八股文
大数据·运维·开发语言·python·数据分析
mikes zhang8 小时前
Flask文件上传与异常处理完全指南
后端·python·flask
烛阴8 小时前
深入浅出地理解Python元类【从入门到精通】
前端·python