我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python学习之旅(三十四)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python学习之旅(三十四)

UDP编程

相对TCP,UDP则是面向无连接的协议

使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包

虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议

服务端

1、创建Socket

#创建基于UDP的socket连接
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#绑定端口
s.bind(('127.0.0.1', 9999))

SOCK_DGRAM指定了这个Socket的类型是UDP

2、接收来自任何客户端的数据

print('Bind UDP on 9999...')
while True:
    #接收数据
    data, addr = s.recvfrom(1024)
    print('Received from %s:%s.' % addr)
    s.sendto(b'Hello, %s!' % data, addr)

绑定端口和TCP一样,但是不需要调用listen()方法

recvfrom()方法返回数据和客户端的地址与端口,这样,服务器收到数据后,直接调用sendto()就可以把数据用UDP发给客户端

客户端

创建基于UDP的Socket,直接通过sendto()给服务器发数据

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for data in [b'Alice', b'Bob', b'Jack']:
    #发送数据
    s.sendto(data, ('127.0.0.1', 9999))
    #接收数据
    print(s.recv(1024).decode('utf-8'))
s.close()

从服务器接收数据仍然调用recv()方法

运行udp_server.py和udp_client.py

udp_server.py结果:
Bind UDP on 9999...
Received from 127.0.0.1:60136.
Received from 127.0.0.1:60136.
Received from 127.0.0.1:60136.

udp_client.py结果:
Hello, Alice!
Hello, Bob!
Hello, Jack!

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python学习之旅(三十四)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python学习之旅(三十四)

UDP编程相对TCP,UDP则是面向无连接的协议使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议
2023-01-30

Python学习之旅(十四)

Python内置函数1、abs:取绝对值abs(-1)12、all:把序列中的每一个元素拿出来做布尔运算,都为真则返回True,如果序列中有None、0、“”、[]、{}、()则返回Falseall([1,23,0])False3、any:
2023-01-30

Python学习之旅(三十三)

网络通信是两台计算机上的两个进程之间的通信,而网络编程就是如何在程序中实现两台计算机的通信P协议负责把数据从一台计算机通过网络发送到另一台计算机TCP协议则是建立在IP协议之上的。TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序
2023-01-30

Python学习之旅(二十四)

一、threadlocal在多线程环境下,每个线程都有自己的数据一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁在函数间一层层调用的时候,使用局部变量很麻烦,使用全局变量
2023-01-30

Python学习之旅(三十二)

Python内置了turtle库,可以在计算机上绘图运动控制:1、画笔定位到坐标(x,y):turtle.goto(x,y)2、向正方向运动 distance 长的距离:turtle.forward(distance)3、向负方向运动 di
2023-01-30

Python学习之旅(三十七)

程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。而如何定义数据的存储格式就是一个大问题。为了便于程序保存和读取数据,而且,能直
2023-01-30

Python学习之旅(三十八)

二、MySQLMySQL是Web世界中使用最广泛的数据库服务器。SQLite的特点是轻量级、可嵌入,但不能承受高并发访问,适合桌面和移动应用。而MySQL是为服务器端设计的数据库,能承受高并发访问,同时占用的内存也远远大于SQLite。可以
2023-01-30

Python学习之旅(十)

字符串格式化有2种方法:一是用“%”,二是用format。转换标志:,默认右对齐,%后面加上“-”表示左对齐;“+”表示在转换值之前要加上正负号;“ ”(空白符)表示在正数前面保留空格;“0”表示转换值若位数不够用0填充。最小字段宽度(可选
2023-01-30

python学习之旅(十五)

一、装饰器decorator:本质上就是函数,可以增强函数的功能。定义起来虽然有点复杂,但使用起来非常灵活和方便1、不修改被装饰函数的源代码2、不修改被装饰函数的调用方式3、装饰函数对被装饰函数透明import functoolsdef l
2023-01-30

python学习之旅(十六)

1、可以把模块想象成导入Python以增强其功能的扩展2、任何程序都可以作为模块导入3、导入模块并不意味着在导入的时候执行某些操作,它们主要用于定义变量、函数和类等 #hello1.pydef hello(): print("Hell
2023-01-30

Python学习之旅(十一)

一、全局变量和局部变量局部变量:在函数内定义的变量,在函数内使用全局变量:在函数外定义的变量,在程序任何地方都可以使用1、全局变量与局部变量同名这时函数内部只调用局部变量,如果要调用全局变量需要在函数内加一句“global 同名变量”x=1
2023-01-30

Python学习之旅(二十五)

正则表达式:检查一个字符串是否与某个模式匹配\d :匹配数字\w :匹配字母或数字. :匹配任意字符{n} :匹配n个字符{m,n} :匹配m到n个字符\s :匹配空格a|b :匹配a或b^ :匹配字符串开头$ :匹配字符串结尾* :匹配0
2023-01-30

Python学习之旅(二十九)

一、PillowPIL(Python Imaging Library):提供了强大的图像操作功能,可以通过简单的代码完成复杂的图像处理,是Python平台事实上的图像处理库,支持Python 2.7以及更低的版本Pillow:在PIL基础上
2023-01-30

【Python之旅】第四篇(三):Pyt

终于是来到了Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。1.面向对象编程的相关名词及解释    世界万物,皆可分类,一切皆为对象。    所谓的面向对象编程,指的是一种
2023-01-31

python的学习之旅

首先先介绍下本人,本人名叫杜邱,别名也叫故都的秋,网络工程专业毕业,现就职一家电子商务公司,已经三年了,起初从一个小小的网管做起,一台路由器,一台交换机,下面连着50几台电脑,三年过去了,慢慢的也在成长,装过监控,管过服务器,弄过网络,杀过
2023-01-31

python学习之旅(二)

Python基础知识(1)一、变量变量名可以由字母、数字、下划线任意组合而成。注意:1.变量名不能以数字开头;           2.变量名不能为关键字;           3.变量名尽量起有意义的,能够通过变量名知道代表的是什么。 二
2023-01-30

我的python学习--第十三天

nginx + uwsgi + flask一、安装1、安装uwsgi[root@yaoliang day_13]# wget http://projects.unbit.it/downloads/uwsgi-2.0.4.tar.gz[roo
2023-01-31

我的python学习--第十四天(一)

一、运维管理系统(基于Flask)回顾1、权限控制  通过session实现权限控制,session是一个全局字典,当用户登录时,可以获取到用户的用户名,通过查找数据库获取用户的权限保存进session中,在每次页面跳转时同过查询sessi
2023-01-31

学习Python旅程之一Python的基

环境变量配置     程序和可执行文件可以在许多目录,而这些路径很可能不在操作系统提供可执行文件的搜索路径中。path(路径)存储在环境变量中,这是由操作系统维护的一个命名的字符串。这些变量包含可用的命令行解释器和其他程序的信息。Unix或
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录