当前位置: 首页 > 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()

相关文章:

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

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

正确可用--Notepad++批量转换文件编码为UTF8

参考了:Notepad批量转换文件编码为UTF8_怎么批量把ansi转成utf8-CSDN博客​​​​​​https://blog.csdn.net/wangmy1988/article/details/118698647我参考了它的教程,但是py脚本写的不对. 只能改一个.不能实现批量更改. 他的操作步骤没问题,就是把脚本代码换成我这个. #-*-…...

每天五分钟深度学习框架PyTorch:创建具有特殊值的tensor张量

本文重点 tensor张量是一个多维数组,本节课程我们将学习一些pytorch中已经封装好的方法,使用这些方法我们可以快速创建出具有特殊意义的tensor张量。 创建一个值为空的张量 import torch import numpy as np a=torch.empty(1) print(a) print(a.dim()) print(s.shape) 如图…...

2024电工杯数学建模B题Python代码+结果表数据教学

2024电工杯B题保姆级分析完整思路代码数据教学 B题题目:大学生平衡膳食食谱的优化设计及评价 以下仅展示部分,完整版看文末的文章 import pandas as pd df1 pd.read_excel(附件1:1名男大学生的一日食谱.xlsx) df1# 获取所有工作表名称 e…...

LabVIEW和ZigBee无线温湿度监测

LabVIEW和ZigBee无线温湿度监测 随着物联网技术的迅速发展,温湿度数据的远程无线监测在农业大棚、仓库和其他需环境控制的场所变得日益重要。开发了一种基于LabVIEW和ZigBee技术的多区域无线温湿度监测系统。系统通过DHT11传感器收集温湿度数据,利用Zig…...

FastCopy

目录 背景: 简介: 原理: 下载地址: 工具的使用: 背景: 简介: FastCopy是一款速度非常快的拷贝软件,软件版本为5.7.1 Fastcopy是日本的最快的文件拷贝工具,磁盘间相互拷贝文件是司空见惯的事情,通常情况…...

stm32常用编写C语言基础知识,条件编译,结构体等

位操作 宏定义#define 带参数的宏定义 条件编译 下面是头文件中常见的编译语句,其中_LED_H可以认为是一个编译段的名字。 下面代码表示满足某个条件,进行包含头文件的编译,SYSTEM_SUPPORT_OS可能是条件,当非0时,可以…...

秋招突击——算法——模板题——区间DP——合并石子

文章目录 题目内容思路分析实现代码分析与总结 题目内容 思路分析 基本思路&#xff0c;先是遍历区间长度&#xff0c;然后再是遍历左端点&#xff0c;最后是遍历中间的划分点&#xff0c;将阶乘问题变成n三次方的问题 实现代码 // 组合数问题 #include <iostream> #in…...

数据库——实验12 数据库备份和还原

1. 备份设备的概念和方法 备份设备是指 SQL Server 中存储数据库和事务日志备份副本的载体&#xff0c;备份设备可以被定义成本地的磁盘文件、远程服务器上的磁盘文件、磁带。 在创建备份时&#xff0c;必须选择要将数据写入的备份设备。SQL Server 2005 可以将数据库、事务日…...

Node.js —— 前后端的身份认证 之用 express 实现 JWT 身份认证

JWT的认识 什么是 JWT JWT&#xff08;英文全称&#xff1a;JSON Web Token&#xff09;是目前最流行的跨域认证解决方案。 JWT 的工作原理 总结&#xff1a;用户的信息通过 Token 字符串的形式&#xff0c;保存在客户端浏览器中。服务器通过还原 Token 字符串的形式来认证用…...

文旅3d仿真数字人形象为游客提供全方位的便捷服务

在AI人工智能与VR虚拟现实技术的双重驱动下&#xff0c;文旅3D数字代言人正以其独特的魅力&#xff0c;频频亮相于各类文旅场景&#xff0c;为游客带来前所未有的个性化服务体验。他们不仅有趣有品&#xff0c;更能言善道&#xff0c;成为文旅业数字化发展的新亮点。 这些文旅3…...

leetcode算法常用函数

文章目录 字符相关字符串相关数组和集合相关数值相关容器相关 核心关注算法逻辑&#xff0c;其他的常见操作用标准库里函数即可&#xff0c;不用浪费时间。 Java语言作为参考&#xff0c;记录刷题时常用的函数 字符相关 Character.isDigit(); //判断是否为数字Character.isLet…...

element-plus表格的表单校验如何实现,重点在model和prop

文章目录 vue&#xff1a;3.x element-plus&#xff1a;2.7.3 重点&#xff1a; 1) tableData放到form对象里 2) form-item的prop要写成tableData.序号.属性 <!--table-表单校验--> <template><el-form ref"forms" :model"form"><e…...

WPF密码输入框明文掩码切换

1&#xff0c;效果 2&#xff0c;代码&#xff1a; WPF的PasswordBox不能像Winform中的PasswordBox那样&#xff0c;通过PasswordBox.PasswordChar(char)0显示明文。所以这里使用无外观控件构筑掩码明文切换。 无外观控件遵守Themes/Generic.xaml文件配置. <ResourceDicti…...

SaaS架构详细介绍及一个具体实现的示例

SaaS架构详细介绍 软件即服务&#xff08;SaaS&#xff0c;Software as a Service&#xff09;是一种通过互联网交付软件应用程序的模式。 SaaS提供商托管应用程序&#xff0c;并通过网络将其提供给最终用户&#xff0c;用户无需安装和维护软件&#xff0c;只需通过浏览器或其他…...

四川音盛佳云电子商务有限公司正规吗?靠谱吗?

在数字化浪潮席卷全球的今天&#xff0c;电子商务已成为推动经济发展的重要引擎。四川音盛佳云电子商务有限公司&#xff0c;作为抖音电商服务的佼佼者&#xff0c;正以其独特的视角和创新的策略&#xff0c;引领着抖音电商的新潮流&#xff0c;开启着电商服务的新篇章。 四川…...

C++ 写的_string类,兼容std::string, MFC CString和 C# 的string

代码例子&#xff1a; using namespace lf; int main() { CString s1 _t("http://www.csdn.net"); _string s2 s1; CString s3 s2; _pcn(s1); _pcn(s2); _pcn(s3); return 0; } 输出&#xff1a; _Str.h /***************************************…...

【揭开深度学习之核:反向传播算法简析】

文章目录 前言反向传播算法的基础工作原理伪代码示例关键点结论 前言 在深度学习的世界里&#xff0c;反向传播算法是一张藏在神秘面纱后的地图&#xff0c;它指引着神经网络通过复杂的数据迷宫&#xff0c;找到最优解的路径。本文将简要介绍反向传播算法的原理&#xff0c;探…...

Web3 知识体系架构图

Web3 知识体系架构图 │ ├── 1. 基础概念 │ │ │ ├── 1.1 区块链 │ │ ├── 工作原理 │ │ ├── 公链 vs 私链 │ │ └── 常见区块链平台&#xff08;如比特币、以太坊&#xff09; │ │ │ ├── 1.2 去中心化 │ │ ├── P2P 网络 │ │ ├── 去中心化…...

SQL、Mongo、Redis一般适用于那些场景

在一个项目中同时使用 MySQL、Redis 和 MongoDB 是相对常见的做法&#xff0c;因为它们各自具有不同的特点和适用场景&#xff0c;可以组合使用以满足不同的需求。下面是它们的一些常见用途和特点&#xff1a; MySQL&#xff1a; 关系型数据库&#xff1a; MySQL 是一个传统的关…...

终极指南:如何用res-downloader一键下载全网无水印资源

终极指南&#xff1a;如何用res-downloader一键下载全网无水印资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否经常…...

多个source、多个sink

关键配置&#xff1a;sink的&#xff1a;plugin_input ["source_data1", "source_data2"]对应模型┌──────────┐│ Source A │──┐└──────────┘ │├──▶ Sink┌──────────┐ ││ Source B │──┘└──────…...

火影AI绘画实战:用忍者绘卷Z-Image Turbo生成鸣人、佐助角色图教程

火影AI绘画实战&#xff1a;用忍者绘卷Z-Image Turbo生成鸣人、佐助角色图教程 1. 教程概述与准备工作 如果你是火影忍者的粉丝&#xff0c;现在可以通过AI技术轻松生成你最喜欢的角色图像。本教程将带你使用"忍者绘卷Z-Image Turbo"这个专门为火影风格优化的AI绘画…...

避开这些坑!Mapbox图层管理实战:动态加载GeoJSON数据的正确姿势

Mapbox高级图层管理实战&#xff1a;GeoJSON动态加载与性能优化全解析 当处理省级以上GIS数据可视化时&#xff0c;Mapbox的图层管理能力直接决定了应用的流畅度和用户体验。许多开发者在使用GeoJSON数据源时&#xff0c;常遇到内存泄漏、渲染卡顿、交互延迟等问题。本文将深入…...

VisualGDB跨平台调试避坑指南:用VS远程调试Linux程序(2023最新版配置)

VisualGDB跨平台调试实战&#xff1a;2023年VS远程开发Linux程序避坑指南 当Visual Studio开发者首次尝试在Linux环境下进行C开发时&#xff0c;往往会面临调试工具链断裂的困境。传统的gdb命令行调试方式与Windows开发者熟悉的图形化调试体验存在巨大鸿沟&#xff0c;而Visual…...

终极指南:Brontes区块链分析引擎的Cargo.toml依赖管理策略

终极指南&#xff1a;Brontes区块链分析引擎的Cargo.toml依赖管理策略 【免费下载链接】brontes A blazingly fast general purpose blockchain analytics engine specialized in systematic mev detection 项目地址: https://gitcode.com/GitHub_Trending/br/brontes B…...

GLM-4v-9b效果展示:直播带货截图→话术分析+转化点提炼

GLM-4v-9b效果展示&#xff1a;直播带货截图→话术分析转化点提炼 1. 模型能力概览 GLM-4v-9b是智谱AI在2024年开源的多模态视觉-语言模型&#xff0c;拥有90亿参数。这个模型最大的特点是能够同时理解图片和文字&#xff0c;支持中英文多轮对话&#xff0c;在11201120高分辨…...

终极WindowResizer完整指南:让窗口调整随心所欲

终极WindowResizer完整指南&#xff1a;让窗口调整随心所欲 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否遇到过无法调整大小的应用窗口&#xff1f;WindowResizer是一款强…...

G-Helper解决华硕笔记本续航衰减的智能调控方案:延长50%使用时间

G-Helper解决华硕笔记本续航衰减的智能调控方案&#xff1a;延长50%使用时间 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF,…...

Qwen3.5-9B Java面试宝典生成器:动态定制八股文与场景题

Qwen3.5-9B Java面试宝典生成器&#xff1a;动态定制八股文与场景题 1. 为什么需要智能面试助手 Java开发者求职路上&#xff0c;最头疼的莫过于海量面试题的整理和记忆。传统方式要么依赖网上零散的八股文合集&#xff0c;要么自己手动整理知识点&#xff0c;效率低下且难以…...