当前位置: 首页 > news >正文

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

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


1. TCP服务器端(Server)

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

import socketdef tcp_server():# 创建TCP socketserver_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} 断开连接")breakprint(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)

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

import socketdef tcp_client():# 创建TCP socketclient_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),输入英文消息后,服务器会返回大写版本。

示例交互

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

相关文章:

  • oracle19C(ZHS16GBK - 简体中文字符集) 数据库迁移到 oracle19C(AL32UTF8 - Unicode字符集)数据库方案
  • 《Apollo 配置中心在动态主题系统中的设计与扩展》
  • 区间合并:牛奶
  • 错题分析接口实现全流程
  • Flink 与 Hive 深度集成
  • 【系统分析师】第5章-基础知识:数据库系统(核心总结)
  • Oracle 单实例双IP配置
  • List的简单模拟实现
  • 树莓派智能小车基本移动实验指导书
  • SSH参数优化与内网穿透技术融合:打造高效远程访问解决方案
  • [CVPR 2025] DiCo:动态协作网络助力半监督3D血管分割新突破
  • Java开发中避免NullPointerException的全面指南
  • RabbitMQ--集群
  • java设计模式[2]之创建型模式
  • 学习设计模式《十三》——迭代器模式
  • C++线性DP-最优解问题、方案数问题
  • Design Compiler:解组(Ungroup)
  • 自编码模型原理
  • Python中提取图片特征的指南
  • 2.2 订阅话题
  • 泰安网站制作服务/国际军事最新消息今天
  • 重庆网站制作的网站/seo是什么职位缩写
  • 做网站二级页面的/鹤壁网络推广哪家好
  • 网站开发和软件开发工作/百度首页纯净版
  • 寿光专业做网站的公司/如何做好一个品牌推广
  • 手机网站的静态页面/深圳全网信息流推广公司