python——网络编程

流程图在这里插入图片描述

面向连接的套接字

面向连接的通信提供序列化的、可靠的和不重复的数据交付,而没有记录边界。主要的协议是传输控制协议(TCP);
TCP套接字,在python中,必须使用SOCK_STREAM作为套接字类型

tcp的特点

  • 面向连接
    通过双方必须先建立好连接才能进行数据的传输
  • 可靠传输
    TCP采用发送应答机制
    超时重传
    错误校验
    流量控制和阻塞管理

python 中客户端例子

import socket

'''
在 Python 中,if __name__ == '__main__': 是一个常见的结构,用于确保某些代码只有在直接运行这个模块时才会被执行,而在这个模块被作为导入的模块时不会被执行

'''
if __name__ == '__main__':
    '''
    创建tcp 客服端套接字
    '''
    tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    tcp_client_socket.connect(("10.211.55.6",9090))

    send_content = "hello,world,您好"
    send_data = send_content.encode("gbk")
    tcp_client_socket.send(send_data)

python 中服务端例子

可以支持多客户端模式

import  socket
import threading


def handler_client_request(client_socket,ip_port):
    recv_data = client_socket.recv(1024)
    if recv_data:
        print(recv_data.decode('utf-8'))
        send_content = "测试"
        client_socket.send(send_content.encode('utf-8'))
    else:
        print("客服端下线",ip_port)
    client_socket.close()


if __name__ == '__main__':

    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)

    tcp_socket.bind(("",9090))

    # 128 表示最大等待建立链接的个数
    tcp_socket.listen(128)

    while True:
        new_client,ip_port = tcp_socket.accept()
        sub_thread = threading.Thread(target=handler_client_request, args=(new_client,ip_port))
        sub_thread.start()

    tcp_socket.close()



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/679892.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用GitHub托管静态网页

前言​: 如果没有服务器,也没有域名,又想部署静态网页的同学,那就可以尝试使用GitHub托管自己的网页​。 正文: 首先要有自己的GitHub的账号,如果没有可以自己搜索官网进行注册登录,国内对Gi…

深入了解 C 语言 Bug

目录 一、引言二、Bug的定义三、Bug的由来四、Bug的影响五、应对 Bug 的方法六、结论 一、引言 1、在 C 语言的编程世界中,Bug 是一个我们无法回避的话题。 2、Bug,简单来说,就是程序中存在的错误或缺陷。它可以表现为程序运行结果的异常、崩…

容器运行nslookup提示bash: nslookup: command not found【笔记】

在容器中提示bash: nslookup: command not found,表示容器中没有安装nslookup命令。 可以通过以下命令安装nslookup: 对于基于Debian/Ubuntu的容器,使用以下命令: apt-get update apt-get install -y dnsutils对于基于CentOS/R…

机器学习、深度学习模型建模开发过程中常见的评估指标汇总学习记录

在机器学习、深度学习模型的开发过程中, 很重要的一个环节就是要对模型的性能进行评估分析,不同类型的任务不同的模型对应使用不同的评估指标体系,本文的主要目的是正好趁着最近有这块的需求,就想着找点时间把汇总学习的内容整理记…

TypeScript学习(一):开发环境搭建

官方文档搭建参考 https://learn.microsoft.com/zh-cn/training/modules/typescript-get-started/ 1.下载node.js https://nodejs.org/en/download 2.下载vscode https://code.visualstudio.com/ 3.在线ts的测试工具 https://www.typescriptlang.org/play/ 4.下载typescr…

Linux线程安全:线程互斥

一、线程互斥的概念 1.1临界资源与互斥的关系 临界资源:多线程执行流共享的资源就叫做临界资源。 临界区:每个线程内部,访问临界资源的代码,就叫做临界区。 互斥:任何时刻,互斥保证有且只有一个执行流进入…

274 基于matlab的随机粗糙表面对微气体轴承内气体压强分布的影响

基于matlab的随机粗糙表面对微气体轴承内气体压强分布的影响。采用差分法求解气体轴承的雷诺方程,通过尺寸参数、分形维数对粗糙度表面设置,滑流参数设置,实现气压分布可视化结果显示。程序已调通,可直接运行。 274 气体轴承 随机…

软件设计,建模及需求分析

文章目录 设计原则建模及需求分析重构 设计原则 SOLID原则 单一职责 开闭 (扩展开放,修改关闭) 里氏替换 (父类出现地方都可以用子类替换) 接口隔离 依赖倒置(高层模块不依赖低层,两层都依…

[数据集][图像分类]茶叶叶子病害分类数据集304张4类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):304 分类类别数:4 类别名称:[“anthracnose”,“bird_eye_spot”…

三维模型轻量化工具:手工模型、BIM、倾斜摄影等皆可用!

老子云是全球领先的数字孪生引擎技术及服务提供商,它专注于让一切3D模型在全网多端轻量化处理与展示,为行业数字化转型升级与数字孪生应用提供成套的3D可视化技术、产品与服务。 老子云是全球领先的数字孪生引擎技术及服务提供商,它专注于让…

端口映射如何检测?

端口映射是一种网络通信技术,它允许将公网IP地址的特定端口指向内部局域网中的特定设备或应用程序。通过端口映射,可以实现远程访问内部设备,解决了网络环境限制的问题。 在进行端口映射之前,需要进行端口映射检测,以确…

JS:setTimeout计时器优化

setTimeout会因为浏览器的事件循环机制导致计时器的误差,JS代码越复杂、越多,误差越大。 通过使用performance.now()可以一定程度上减小这个误差值。 performance.now()返回的是一个浮点数,表示从页面加载到现在的毫秒数,精度可…

动态数组的实现(仿写ArrayList)

动态数组是什么 之前写过一篇数组和静态数组的介绍:数组的定义和特点,静态数组CURD的实现 我们在静态数组的基础上,增加一些比较方便的功能,比如自动扩容,获取数组长度等,这样的数组叫动态数组 动态数组…

浅析Vue3基础知识(vue3笔记之入门篇)

本文是结合实践中和学习技术文章总结出来的笔记(个人使用),如有雷同纯属正常((✿◠‿◠)) 喜欢的话点个赞,谢谢! 时下Vue框架都是使用Vue3版本来开发项目了,为了加深对Vue3基本知识的了解,特写了这个笔记 1. 生命周期 1.1. vue3生命周期 一个组件从开始到结束,正常的生命周…

【免费】2021年数学建模国赛C题问题一--基于熵权法和TOPSIS法详细版附Word加代码

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

EXCEL多sheet添加目录跳转

EXCEL多sheet添加目录跳转 背景 excel中有几十个sheet,点下方左右切换sheet太耗时,希望可以有根据sheet名超链接跳转相应sheet,处理完后再跳回原sheet。 方案一 新建目录sheet,在A1写sheet名,右键选择最下方超链接…

I.MX RT1170之MIPI CSI摄像头初始化和显示流程详解

在上一篇文章I.MX RT1170之MIPI DSI初始化和显示流程详解中,我们介绍了RT1170单片机中MIPI DSI显示屏初始化和显示的详细步骤,那这一节就来介绍MIPI的另一个接口应用:摄像头CSI的初始化和配置流程。 对于摄像头来说,一般我们还要…

软件产品必须要进行鉴定测试吗?测试流程和作用简析

软件产品是现代社会中不可或缺的一部分,它们在商业、娱乐、科技等领域的应用广泛且深入。然而,我们是否关注过这些软件产品的鉴定测试呢?鉴定测试是什么?它的测试流程有哪些?又有什么作用呢?在本文中,我们将为您全面解析这些问题。 鉴定…

大数据学习问题记录

问题记录 node1突然无法连接finalshell node1突然无法连接finalshell 今天我打开虚拟机和finalshell的时候,发现我的node1连接不上finalshell,但是node2、node3依旧可以链接,我在网上找了很多方法,但是是关于全部虚拟机连接不上finalshell&a…

USB HOST DWC3 初始化

https://www.cnblogs.com/newjiang/p/15675746.html 如果dr_mode为device,则初始化gadget。 如果dr_mode为host,需要初始化xHCI驱动。在dwc3_host_init函数的最后调用platform_device_add(xhci)添加platform device(xhci-hcd)&a…