python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)


Posted in Python onApril 25, 2014

UDP广泛应用于需要相互传输数据的网络应用中,如QQ使用的就是UDP协议。在网络质量不好的情况下,使用UDP协议时丢包现象十分严重,但UDP占用资源少,处理速度快,UDP依然是传输数据时常用的协议。

下面是用python实现UDP服务器的代码:

#!/usr/bin/env python
import socket
address=('127.0.0.1',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(address)
while 1:
 data,addr=s.recvfrom(2048)
 if not data:
  break
 print "got data from",addr
 print data
s.close()

UDP客户端的代码:

#!/usr/bin/env python
import socket
addr=('127.0.0.1',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while 1:
 data=raw_input()
 if not data:
  break
 s.sendto(data,addr)
s.close()

运行这两个程序,会显示以下结果:

服务器端:

python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)

客户端:

python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
UDP的应用

在局域网中,如果要想局域网内所有计算机发送数据,可以使用广播,广播不能用TCP实现,可以用UDP实现,接受方收到广播数据后,如果有进程在侦听这个端口,就会接收数据,如果没有进程侦听,数据包会被丢弃。

广播的发送方:

#!usr/bin/env python
import socket
host=''
port=10000
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
s.bind((host,port))
while 1:
 try:
  data,addr=s.recvfrom(1024)
  print "got data from",addr
  s.sendto("broadcasting",addr)
  print data
 except KeyboardInterrupt:
  raise

广播的接收方:

#!/usr/bin/env python
import socket,sys
addr=('<broadcast>',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
s.sendto("hello from client",addr)
while 1:
 data=s.recvfrom(1024)
 if not data:
  break
 print data

运行广播程序,发送端会显示以下结果:

got data from (‘<地址>',<端口号>)
hello fromclient

接收端会显示以下结果:

(‘broading',(<IP地址>,10000))
Python 相关文章推荐
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 Python
详解Python的Django框架中的templates设置
May 11 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
python 提取文件指定列的方法示例
Aug 07 Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
Python3实现飞机大战游戏
Apr 24 Python
Python 如何解决稀疏矩阵运算
May 26 Python
python中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 #Python
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 #Python
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 #Python
Python 时间操作例子和时间格式化参数小结
Apr 24 #Python
python抓取网页图片并放到指定文件夹
Apr 24 #Python
python字符串替换示例
Apr 24 #Python
python自动安装pip
Apr 24 #Python
You might like
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
详解php协程知识点
2018/09/21 PHP
快速排序 php与javascript的不同之处
2011/02/22 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
用python生成1000个txt文件的方法
2018/10/25 Python
Python3解释器知识点总结
2019/02/19 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
Django实现跨域请求过程详解
2019/07/25 Python
详解python算法常用技巧与内置库
2020/10/17 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
幼儿园端午节活动总结
2015/05/05 职场文书
《开国大典》教学反思
2016/02/16 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
python爬取某网站原图作为壁纸
2021/06/02 Python
Python turtle实现贪吃蛇游戏
2021/06/18 Python
Golang 对es的操作实例
2022/04/20 Golang