python udp通信(python的socket库)

前言

前文使用TCP面向流的套接字,今天讲解的UDP的工作方式与TCP/IP不同。UDP是用户数据报协议,是一个面向消息的协议。

一方面,UDP不需要一个长期活动连接,所以建立UDP套接字稍微简单一些。另一方面,UDP消息必须放在一个数据报中。

在IPv4中,数据报包含65507个字节,这些字节信息中还包括首部信息。因为UDP不需要长期的连接,所以它无法得到TCP所能提供的传输保障。

服务器代码

因为UDP并没有连接,所以服务器不需要监听和接收连接。它只需要使用bing()将其套接字与一个端口关联,然后等待各个消息。

示例代码如下:

import socket 39;localhost', 10000)) while True: data, address = sock.recvfrom(4096) print(data.decode('UTF-8'), address) if data: sent = sock.sendto('已接收到你发来的消息'.encode('UTF-8'), address)

其中,recvfrom()表示从套接字读取消息,比如客户但发送消息后,消息与客户但地址都在里面。

至于sendto()很好理解,就是发送消息给别人。参数1表示消息内容,参数2就是发送到哪里(也就是对方的地址)。

客户端代码

客户端当然比服务器更简单,因为UDP不需要连接,可以直接将消息发送到服务器,并使用recvfrom()响应。示例如下:

import socket sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: msg = "发送消息到服务器".encode('utf-8') sent = sock.sendto(msg, ('localhost', 10000)) data, server = sock.recvfrom(4096) print(data.decode()) finally: sock.close()

同样的,这里sock.recvfrom()用于接收服务器反馈的消息内容与地址。运行之后,效果如下所示:

python udp通信(python的socket库)

python udp通信(python的socket库)

本文【python udp通信(python的socket库)】由作者: 前端后端 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4611.html

(0)
上一篇 2023-03-16 09:02:47
下一篇 2023-03-16 09:05:11

相关推荐

  • 快速启动显示桌面图标不见了

    XP系统任务栏上的显示桌面图标不见了怎么办?XP系统任务栏上有一个显示桌面的图标,能够让我们快速切回到系统桌面,但是有用户反映这个图标不见了,如何解决?请看下文介绍。 解决方法: 1.右击桌面左下角的开始菜单,选择“属性”,如下图所示。 2.切换到“任务栏”选项卡,勾选“显示快速启动”,点击“确定”按钮,如下图所示。 3.可以发现显示桌面图标又回到任务栏中了…

    2023-03-17
    100
  • dos命令大全及用法pdf(dos内部命令)

    晚上好,我是老杨,今天来聊聊常用的DOS命令。 虽然是老古董,但不妨碍它的好用程度。可能一些新手不晓得,但是和老杨一个年纪的,一定对DOS系统不陌生。 尽管现在大多数电脑的操作系统是Windows,但在Windows 95推出以前,占统治地位的操作系统就是DOS。 DOS即Disk Operating System,我们常成为是磁盘操作系统。 由于Windo…

    2023-03-19
    000
  • 五笔入门教程 自学五笔技巧

    作为一个用了10年五笔的计算机行业从业者。 每次有人见到我用五笔,都惊讶不已!!! 哇塞,你用的五笔输入法吗? 今天抽时间整理了一下,我学习五笔的方法,用时三个月,希望可以帮助到您~ 第一步:树立信念 不管是做什么事,信念是第yi步,有了信念,那才能有动力。 我们当时全班有五十多位同学,五笔学习呢,一共学了一个月,许多人一开始没学几天就放弃了。 zui后坚持…

    2023-03-21
    100
  • 重写和重载都属于面向对象的特征_简述什么是重载和重写

    一、基本定义 构造函数:是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。((C#中讲面向对象的继承的时候讲了,我是没怎么在意,师哥那么一说,才。。。。。) 重写:当一个子类继承一父…

    2023-03-11
    200
  • sqlyog连接mysql数据库

    今天在用sqlyog连接MySql8.0时提示2508错误码,如下图所示: 之后用navicat连接mysql,连接正常 那么这说明数据库连接应该是好的,那么2个工具一个可以连接,一个不可以,原因是什么?这是因为MySQL 8.0 安装时自动为‘root’@'localhost’创建帐户,密码的加密方法发生了改变,因此 SQLyog 不能正常解析,…

    2023-03-08
    600
  • sql if语句嵌套去重计数_sql去掉某个字段重复的数据

    1.简介 if判断语句是很多编程语言的重要组成部分。但是,若我们最终编写了大量嵌套的if语句,这将使得我们的代码更加复杂和难以维护。 让我们看看能否使用别的方式来做呢。 设计模式是为了更好的代码重用性,可读性,可靠性,可维护性,它有六大原则 1)单一职责原则(Single Responsibility Principle,简称SRP):该原则是针对类来说的,…

    2023-03-11
    200
  • excel表格字母大小写转换_excel数字大小写字母转换

    在实际的工作中,经常会遇到字母和数字的大小写转换问题,各位亲是怎么实现的呢? 一、字母转换。 1、全部大写——Upper。 方法: 在目标单元格中输入公式:=UPPER(B3)。 2、全部小写——Lower。 方法: 在目标单元格中输入公式:=LOWER(C3)。 3、首字母大写——Proper。 方法: 在目标单元格中输入公式:=PROPER(B3)。 二…

    2023-03-11
    500
  • solidworks动画制作教程 solidworks教学

    方法: 1.首先对模型进行装配,装配完成之后如下图所示。 2.点击SolidWorks窗口左下侧的“运动算例1”选项,如下图所示。 我们可以看到如下图所示的窗口。使用鼠标将红色箭头所指的竖线拖拽到5秒的位置,如下图所示。 使用鼠标左键拖动下图黄色的零件到零件的另一端,如下图所示。 我们可以系统会自动产生如下图所示的键码。这一段我们使用默认的线性插值模式。 3…

    2023-03-16
    200
  • 说明线程和进程的区别_多线程和多进程的区别

    首先,从定义开始,先看一下教科书上 进程和线程定义: 进程:资源分配的最小单位。 线程:程序执行的最小单位。 心中默念,啥啥啥,写的这是啥。 1、进程 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。 举例说明进程: 想象一位有一手好厨艺的计算机科学家正…

    2023-03-11
    400
  • linux发邮件mail发不出去(linux发邮件显示无效邮箱)

    人永远是要学习的。死的时候,才是毕业的时候。 —— 萧楚女 在linux系统上收发邮件都使用一个命令,即mail命令。假设你现在在root的家目录,你现在要发送一个电子邮件给goddog用户。命令如下,在mail命令中-s(subject的第一个字母)表示有设定邮件的主题,主题就是放在-s之后双引号括起来的部分,这部分可以根据需要随便输入。goddog为邮件…

    2023-03-15
    200

发表回复

登录后才能评论
返回顶部
错说博客上线啦!