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

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

http://www.xdnf.cn/news/14113.html

相关文章:

  • frida-android-mod-menu 使用教程
  • LeetCode面试经典150题—旋转数组—LeetCode189
  • c++总结-05-模板与泛型编程
  • 创客匠人视角:知识IP变现的主流模式与创新路径
  • 第十一篇:动态规划(DP)(上)
  • 【算法】基于中位数和MAD鲁棒平均值计算算法
  • 计算机网络-自顶向下—第四章网络层重点复习笔记
  • 薛定谔的猫思想实验如何推演到量子计算
  • Android-Mod-Menu 使用教程
  • Android xml的Preference设置visibility=“gone“ 无效分析解决
  • 【项目实训#08】HarmonyOS知识图谱前端可视化实现
  • 数据结构 学习 栈 2025年6月14日 11点09分
  • IDEA—配置MySQL的驱动程序,引入jar包没有配置不成功问题解决
  • 知识点|MTV模式(Model-template-view)
  • Snipaste:一款简单强大的跨平台截图工具
  • 多线程中SimpleDateFormat为何不安全?如何解决?
  • Python Day50
  • 酷柚易汛ERP 2025-06-12系统升级日志
  • Windows 文件复制利器:ROBOCOPY 拷贝命令指南
  • 聊聊 Glide | 不看源码,只聊设计
  • tp3.1临时连接指定数据库,切片分类in查询,带过滤需要的数据
  • 工业化超声波清洗设备的五大关键特性
  • DeviceNet转PROFINET转换方案:基于S7-1500主站控制欧姆龙CJ2M从站设备
  • 2007-2020年各省国内专利申请授权量数据
  • UVM验证—第二课(一):核心基类阶段机制
  • Deepseek+python - 自动图表生成
  • Arduino学习-红外感应
  • 聊一聊 - 如何写好README文档
  • ABB 216EA61B HESG448230R1/G
  • OpenLayers 图层叠加控制