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

Python学习---基于TCP协议的网络通信程序案例

TCP简介:

●TCP 面向连接、可靠的、基于字节流的传输控制协议
●TCP的特点
        ○面向连接
        ○可靠传输
                ■应答机制
                ■超时重传
                ■错误校验
                ■流量管控
●TCP通信模型
TCP严格区分客户端、服务端

 tcp通信模型:

 客户端代码:

# 1﹑导入socket模块
import socket# 2·创建socket套接字
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 3·建立tcp连接(和服务端建立连接)
address = ("192.168.52.2", 8080)
tcp_client_socket.connect(address)
# 4·开始发送数据(到服务端)
tcp_client_socket.send("你好,世界!".encode("gbk"))
# 接收数据:二进制数据
recv_data = tcp_client_socket.recv(1024)
recv_text = recv_data.decode("gbk")
print("收到数据:", recv_text)
# 5·关闭套接字
tcp_client_socket.close()

服务端代码: 

1.能够接受一个客户端的多条信息

2.能够接受多个客户端连接

 目前是单线程,只有第一个客户端断开连接后第二个客户端才能连接,多线程可实现多个客户端同时连接收发消息

import socket# 1.socket创建一个套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.bind绑定ip和port,默认本地ip地址
address = ("", 10000)
tcp_server_socket.bind(address)
# 3.开启监听,listen使套接字变为可以被动链接,允许接受最大连接数
tcp_server_socket.listen(128)
while True:# 4.accept等待客户端的链接,返回一个新的套接字和客户端的ip地址端口号,此套接字负责和客户端通信recv_data = tcp_server_socket.accept()# 5.recv/send接收发送数据new_client_socket, client_ip_port = recv_dataprint(f"{client_ip_port}  已连接……………………")while True:recv_data = new_client_socket.recv(1024)# 当接受到为空时说明客户端已经断开连接,服务器也应该断开,非空即为真:if recv_data:recv_text = recv_data.decode("gbk")print(f"接收到来自{str(client_ip_port)}的信息:{recv_text}")else:print("客户端已经断开连接!!!!")break# 关闭本次通信连接new_client_socket.close()
# 6.关闭服务器连接
tcp_server_socket.close()
http://www.lryc.cn/news/352308.html

相关文章:

  • 正确可用--Notepad++批量转换文件编码为UTF8
  • 每天五分钟深度学习框架PyTorch:创建具有特殊值的tensor张量
  • 2024电工杯数学建模B题Python代码+结果表数据教学
  • LabVIEW和ZigBee无线温湿度监测
  • FastCopy
  • stm32常用编写C语言基础知识,条件编译,结构体等
  • 秋招突击——算法——模板题——区间DP——合并石子
  • 数据库——实验12 数据库备份和还原
  • Node.js —— 前后端的身份认证 之用 express 实现 JWT 身份认证
  • 文旅3d仿真数字人形象为游客提供全方位的便捷服务
  • leetcode算法常用函数
  • element-plus表格的表单校验如何实现,重点在model和prop
  • WPF密码输入框明文掩码切换
  • SaaS架构详细介绍及一个具体实现的示例
  • 四川音盛佳云电子商务有限公司正规吗?靠谱吗?
  • C++ 写的_string类,兼容std::string, MFC CString和 C# 的string
  • 【揭开深度学习之核:反向传播算法简析】
  • Web3 知识体系架构图
  • SQL、Mongo、Redis一般适用于那些场景
  • 学习图形推理
  • plsql 学习
  • 如何远程连接默认端口?
  • 现代C++ 如何使用 Lambda 使代码更具表现力、更容易理解?
  • LeetCode 2644.找出可整除性得分最大的整数:暴力模拟(两层循环)
  • Python列表,元组,集合,字典详解一篇搞懂
  • Postgresql源码(132)分布式行锁的原理分析
  • 前端 防抖和节流
  • C语言 | Leetcode C语言题解之第109题有序链表转换二叉搜索树
  • 【DevOps】Linux 下安装配置 Apache 服务器:打造你的专属 Web 平台
  • 23种设计模式之一————外观模式详细介绍与讲解